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 思路 贪心 + 小范围前瞻 ...

2025-07-27 · forsythia

AT416 Abc

A - Vacation Validation ac code 1 2 3 4 5 6 7 8 9 10 11 12 13 int n, l ,r; string s; void solve() { cin >> n >> l >> r >> s; s = ' ' + s; for(int i = l; i <= r; i ++) if(s[i] != 'o'){ cout << "No"; return ; } cout << "Yes"; } B - 1D Akari ac code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 string s; void solve() { cin >> s; string r = s; for(int i = 0; i < s.size(); i ++){ if(s[i] == '#') r[i] = '#'; else{ if(i == 0 || s[i - 1] == '#') r[i] = 'o'; else r[i] = '.'; } } cout << r << '\n'; } C - Concat (X-th) 暴力即可 ...

2025-07-26 · forsythia

CFEDU181 Div2

A. Difficult Contest 思路 从大到小排序即可 ac code 1 2 3 4 5 6 7 string s; void solve() { cin >> s; sort(s.begin(), s.end(), greater<char>()); cout << s << '\n'; } B. Left and Down 思路 目标是到达 $(0, 0)$,每次操作最多可以减少 $k$ 单位的横纵坐标。 操作的代价由使用过的不同 $(dx, dy)$ 决定。 为使 $(a, b)$ 同时减到 0,最多可能用到的不同方向数量是: $$ d = \max\left(\left\lceil \frac{a}{k} \right\rceil, \left\lceil \frac{b}{k} \right\rceil\right) $$ ...

2025-07-23 · forsythia

CF1037 Div3

D. This Is the Last Time 题目重述 初始有 $k$ 枚硬币,最多可访问 $n$ 个赌场。 第 $i$ 家赌场给出区间 $[l_i,r_i]$ 与最终硬币数 $real_i$。 仅当当前硬币数 $x$ 满足 $l_i\le x\le r_i$ 才能进入,并立刻令 $x\gets real_i$。 每家赌场最多进入一次,顺序自选,求可获得的最大硬币数。 ...

2025-07-18 · forsythia

2024哈尔滨理工大学计算机科学与技术学院程序设计竞赛题解

A. 罚时 签到 略 B. 数学题 思维,签到 输出n个9即可 ac code 1 2 3 4 5 6 7 #include<iostream> int main() { int n; std::cin >> n; for(int i = 1; i <= n; i ++) std::cout << 9; return 0; } C. 干杯! 字符串,签到 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 #include<iostream> #include<cstdlib> #include<cstring> #include<set> using namespace std; string s; void solve() { getline(cin, s); set<char> st; for(auto ch : s) if(isalpha(ch)) st.insert(ch); cout << st.size(); } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int Case = 1; //cin >> Case; while(Case --) solve(); return 0; } D. 向左看 单调栈 ...

2024-10-24 · Forsythia