CF1039 Div2
A. Recycling Center 思路 将所有袋子按重量升序排序。 第 i 小的袋子在被销毁前会被乘 $2^{i-1}$。其判定是否大于 c 只取决于原始重量是否大于 $\frac{c}{2^{i-1}}$。 从最轻到最重遍历,若当前袋子经过倍增仍大于 c,则答案 +1。 ac code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 LL n, c; void solve() { cin >> n >> c; vector<LL> a(n); for(auto& x : a) cin >> x; vector<int> d; for(auto x : a){ if(x > c){ d.push_back(-1); continue; } LL k = 0; while((x << 1) <= c) x <<= 1, ++ k; d.push_back(k); } sort(d.begin(), d.end()); int t = 0, ans = 0; for(int v : d){ if(v >= t) ++ t; else ++ ans; } cout << ans << '\n'; } B. Deque Process 思路 贪心 + 小范围前瞻 ...