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,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· 大模型工具KTransformer的安装
· [计算机/硬件/GPU] 显卡