Codeforces Round 957 (Div. 3)
1.Codeforces Round 958 (Div. 2)
2.Codeforces Round 957 (Div. 3)
3.Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)4.Codeforces Round 960 (Div. 2)5.AtCoder Beginner Contest 3636.Codeforces Round 961 (Div. 2)7.AtCoder Beginner Contest 3628.Codeforces Round 962 (Div. 3)9.Pinely Round 4 (Div. 1 + Div. 2)10.Educational Codeforces Round 168 (Rated for Div. 2)11.AtCoder Beginner Contest 36712.Codeforces Round 967 (Div. 2)13.Codeforces Round 968 (Div. 2)14.Educational Codeforces Round 173 (Rated for Div. 2)15.Educational Codeforces Round 172 (Rated for Div. 2)(C-D)16.Codeforces Round 998 (Div. 3)17.2025牛客寒假算法基础集训营218.2025牛客寒假算法基础集训营1题目链接:Codeforces Round 957 (Div. 3)
总结:E不懂,F差一个set去重
A. Only Pluses
fag:枚举
B. Angry Monk
fag:模拟
Solution:分裂的花费为
C. Gorilla and Permutation
fag:思维
Solution:大于等于
void solve(){ cin >> n >> m >> k; vector<int> a(n + 1); int i, l, r; for (i = n, l = 1; i >= k; i --, l ++) a[l] = i; for (i = m, r = n; i >= 1; i --, r --) a[r] = i; for (int i = l; i <= r; i ++){ a[i] = ++ m; } for (int i = 1; i <= n; i ++) cout << a[i] << " \n"[i == n]; }
D. Test of Love
fag:DP
Solution:考虑如何从上一步转移,跳过来或者游过来。
- 注意
的范围,可以直接枚举前 个格子(赛时没看到范围,用单调队列优化DP做的) - 游过来的前提,上一格是水。
void solve(){ cin >> n >> m >> k; string s; cin >> s; s = "$" + s; deque<int> qu; vector<int> f(n + 2, INF); f[0] = 0; qu.push_back(0); for (int i = 1; i <= n + 1; i ++){ if (s[i] == 'C') continue; while (qu.size() && qu.front() + m < i){ // 存储原木的坐标 qu.pop_front(); } if (qu.size()) f[i] = f[qu.front()]; if (s[i - 1] == 'W') f[i] = min(f[i], f[i - 1] + 1); if (s[i] == 'L'){ while (qu.size() && f[qu.back()] >= f[i]) qu.pop_back(); qu.push_back(i); } } if (f[n + 1] > k){ cout << "NO\n"; } else{ cout << "YES\n"; } }
E. Novice's Mistake
fag:思维
Desription:给定一个
等于将 个字符串 然后删去末尾 个字符之后代表的整数
Solution:注意到字符串的操作会影响答案的位数,但是数值计算
- 我们枚举
,然后枚举答案的位数 ,对于每个 求出一个 ,判断当前 是否满足条件
Competing:赛场根本没想到位数的关系
void solve(){ string n; cin >> n; vector<pii> ans; for (int a = 1; a <= 10000; a ++){ int len = to_string(stoi(n) * a).size(); // 当前位数 // if (a == 1262) // debug(len); for (int k = len; k; k --){ int b = a * n.size() - k; if (!b) continue; int t = 0; for (int i = 1, j = 0; i <= k; i ++){ if (j == n.size()) j = 0; t = t * 10 + (n[j ++] - '0'); } if (t == stoi(n) * a - b){ ans.push_back({a, b}); } // if (a == 1262 && b == 2519){ // debug(t, stoi(n) * a - b); // } } } cout << ans.size() << endl; for (auto [a, b] : ans){ cout << a << " " << b << endl; } }
F. Test of Love
fag:思维
Description:有
1 <= n <= 1e5 2 <= x <= 1e5 1 <= a_i <= 2e5
Solution:从前往后模拟当前区间能够得到那些因数(使用set去重),因为因数的个数很少,所以可做
Competing:没考虑到使用
void solve(){ int x; cin >> n >> x; vector<int> a(n); set<int> v; // 记录当前区间所有可能出现的x的约数 for (int i = 0; i < n; i ++) cin >> a[i]; int ans = 1; for (int i = 0; i < n; i ++){ if (x % a[i]) continue; set<int> tmp; for (auto j : v){ tmp.ep(a[i] * j); // 记录能够构造出来的数 } for (auto j : tmp){ if (x % j) continue; v.ep(j); } if (v.find(x) != v.end()){ ans ++; v.clear(); } v.ep(a[i]); } cout << ans << endl; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!