Codeforces Round 968 (Div. 2)
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 968 (Div. 2) - Codeforces
总结:C题想到了,但是写成shi了,出得有点慢。
A. Turtle and Good String
tag:签到
Solution:直接判断第一个字符是否与最后一个字符相等即可。
void solve(){ cin >> n; string s; cin >> s; if (s[0] == s[n - 1]){ cout << "No\n"; } else{ cout << "YES\n"; } }
B. Turtle and Piggy Are Playing a Game 2
tag:博弈论
Solution:显然每次操作要么是删除最小值,要么是删除最大值。排序后输出中间值即可。
void solve(){ cin >> n; vector<int> a(n); for (int i = 0; i < n; i ++){ cin >> a[i]; } sort(a.begin(), a.end()); cout << a[n / 2] << endl; }
C. Turtle and Good Pairs
tag:思维
Description:给定一个字符串
Solution:我们令
- 其实只需要按顺序排列字符即可,多的字符全放在后面。
Competing:没仔细想,认为尽可能使相邻字符不同,因此需要判断出现次数最多的字符。
void solve(){ cin >> n; cin >> s; int ma = 0; // 出现次数最多的字符 char c; map<char, int> mp; vector<int> a(26); for (int i = 0; i < n; i ++){ mp[s[i]] ++; if (mp[s[i]] > ma){ ma = mp[s[i]]; c = s[i]; } a[s[i] - 'a'] ++; } if (ma < n - ma + 1){ string ans = ""; int c = 0; while (c < n){ for (int i = 0; i < 26; i ++){ if (a[i]){ a[i] --; ans += char(i + 'a'); c ++; } } } cout << ans << endl; } else{ string ans = ""; int cnt = 0; a[c - 'a'] = 0; bool flag = true; while (cnt < n && flag){ flag = false; for (int i = 0; i < 26; i ++){ if (a[i]){ a[i] --; ans += c; ma --; ans += char(i + 'a'); cnt ++; flag = true; } } } while (ma){ ans += c; ma --; } cout << ans << endl; } }
D1. Turtle and a MEX Problem (Easy Version)
tag:思维
Description:给定
- 每次操作可以任选一个序列,令
。即 为初始值为 ,操作之后可以得到的最大值。 - 给定一个
,求 。
Solution:对于每个序列,我们最多操作两次,可以得到每个序列的第二个
void solve(){ cin >> n >> m; vector<pii> a(n); int ma = 0; for (int i = 0; i < n; i ++){ int len; cin >> len; vector<int> t(len + 10); for (int j = 0; j < len; j ++){ int x; cin >> x; if (x < len + 10) t[x] = 1; } int c = 1; for (int j = 0; j <= len + 5 && c <= 2; j ++){ if (!t[j] && c == 1){ a[i].fi = j; c ++; } else if (!t[j]){ c ++; a[i].se = j; ma = max(ma, j); break; } } } int ans = 0; if (m <= ma){ ans += (m + 1) * ma; } else{ ans += (ma + 1) * ma; ans += (ma + 1 + m) * (m - ma) / 2; } cout << ans << endl; }
D2. Turtle and a MEX Problem (Hard Version)
tag:思维
Solution:和D1的唯一区别时,在一次操作中每个序列最多使用一次。
- 对于第
个序列,我们建一条有向边 。那么一次操作 可以沿着一条出边移动,或者移动到一个任意点 ,并断开它的出边。 - 我们先倒序处理一下,令
等于 能够到达的最大值,我们先倒序处理一下。 - 首先一个
的答案至少是 ,所有 的答案至少是 ;对于所有出度大于 的 , 的答案至少是 。 - 实现步骤:倒序处理
、记录每个点的出度、记录度大于 的最大的 、记录最大的 。
void solve(){ cin >> n >> m; vector<pii> a(n); int ma = 0; for (int i = 0; i < n; i ++){ int len; cin >> len; ma = max(ma, len); vector<int> t(len + 10); for (int j = 0; j < len; j ++){ int x; cin >> x; if (x < len + 10) t[x] = 1; } int c = 1; for (int j = 0; j <= len + 5 && c <= 2; j ++){ // 处理u,v的值 if (!t[j] && c == 1){ a[i].fi = j; c ++; } else if (!t[j]){ c ++; a[i].se = j; break; } } } sort(a.begin(), a.end(), [&](pii a, pii b){ return a.fi > b.fi; }); int mma = 0; // 最大的ui vector<int> b(ma + 10); vector<int> chu(ma + 10); for (auto [x, y] : a){ // 倒序处理 mma = max(mma, x); int t = max(y, b[y]); b[x] = max(b[x], t); chu[x] ++; } int t2 = -1; // 度大于2的,最大的bi for (auto [x, y] : a){ if (chu[x] >= 2 && b[x] > t2){ t2 = b[x]; } } int ans = 0; for (int i = 0; i <= ma + 5 && i <= m; i ++){ b[i] = max({i, b[i], t2, mma}); ans += b[i]; } if (m > ma + 5){ ans += (ma + 6 + m) * (m - ma - 5) / 2; } cout << ans << endl; }
合集:
题解
标签:
Codeforces
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!