codeforces div3 #776
1/A题:
https://codeforces.com/contest/1650/problem/A
这题其实很简单的,因为要同时删除两个数,我们看看我们最终要得到的数在这组数中的什么位置,如果在奇数位,那么就一定可以通过删除数字来得到。
#include <iostream> #include <cstring> using namespace std; int t; int main() { cin >> t; while(t--) { string s; cin >> s; char c; cin >> c; int leng = s.size(); int flag = 0; for(int i = 0; i < leng; i++) { if(s[i] == c) { if((i+1)%2) { flag = 1; break; } } } if(flag) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }
2/B题:
https://codeforces.com/contest/1650/problem/B
我们应该尽量让x去趋近n*a-1,这样x%a就会得到最大的值,同时,x/a也要趋于最大,但是我们应当首先考虑的是x趋近n*a-1 因为这样的效益是最大的。
在区间[l,r]中,我们从最右端开始,最小的可能就是r/x+r%x了(因为要求最大嘛),然后看看r减去r%x-1的数是否在区间里,如果在的话,那么这个就是最大值,否则就是r了。
#include <bits/stdc++.h> using namespace std; #define long long int #define forn(i,n) for(int i = 0; i < int(n); i++) void solve() { int l, r, a; cin >> l >> r >> a; int ans = r/a+r%a; int t = r/a*a-1; if(t>=l) ans = max(ans, t/a+t%a); cout << ans << endl; } signed main() { int t; cin >> t; while(t--) { solve(); } return 0; }
3/C题:
https://codeforces.com/contest/1650/problem/C
这题思路很牛,我以前都没见过,,,orz 好好学习吧。
#include <bits/stdc++.h> using namespace std; #define forn(i, n) for(int i = 0; i < int(n); i++) #define long long int struct node { int w, p, id; }; void solve() { int n, m; cin >> n >> m; vector<node>q(m); forn(i,m) { cin >> q[i].p >> q[i].w; q[i].id = i+1; } sort(q.begin(), q.end(), [](node a, node b){ return a.w < b.w; }); sort(q.begin(), q.begin()+2*n, [](node a, node b){ return a.p < b.p; }); int sum = 0; forn(i,n){ sum += q[i].w+q[2*n-i-1].w; } cout << sum << endl; forn(i,n){ cout << q[i].id << ' ' << q[2*n-i-1].id << endl; } cout << endl; } int main() { int t; cin >> t; while(t--) { solve(); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)