【CodeForces训练记录】Codeforces Round 1003 (Div. 4)
训练情况
赛后反思
题面读的有点疑惑,怀疑自己阅读理解不大行了,简单题狂WA,C2二分调半天没出,水平严重退步
A题
最后两个字母 us
换成 i
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'
using namespace std;
void solve(){
string s; cin>>s;
int n = s.size();
cout<<s.substr(0,n-2)<<"i"<<endl;
}
signed main(){
int T; cin>>T; while(T--)
solve();
return 0;
}
B题
直接瞪眼发现一个显然的结论,如果有两个连续字母一样,那可以一直无限消下去直到只剩下一个,否则一次消不了答案就是字符串的长度
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'
using namespace std;
void solve(){
string s; cin>>s;
bool flag = false;
for(int i = 1;i<s.size();i++){
if(s[i] == s[i-1]) flag = true;
}
if(flag) cout<<1<<endl;
else cout<<s.size()<<endl;
}
signed main(){
int T; cin>>T; while(T--)
solve();
return 0;
}
C1题
直接贪心,我们每次操作为了将前面的数列尽可能保证合法的情况下减小实现局部最优,才能使后面数列有更多操作空间,如果减小不了就不操作了
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'
using namespace std;
void solve(){
int n,m; cin>>n>>m;
vector<int> a(n + 1);
vector<int> b(n + 1);
vector<int> ans(n + 1);
for(int i = 1;i<=n;i++) cin>>a[i];
int c; cin>>c;
for(int i = 1;i<=n;i++) b[i] = c - a[i];
ans[1] = min(a[1],b[1]);
for(int i = 2;i<=n;i++){
if(min(a[i],b[i]) < ans[i-1]) ans[i] = max(a[i],b[i]);
else ans[i] = min(a[i],b[i]);
}
// for(int i = 1;i<=n;i++) cout<<a[i]<<" "; cout<<endl;
if(is_sorted(ans.begin() + 1,ans.end())) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
signed main(){
int T; cin>>T; while(T--)
solve();
return 0;
}
D题
显然的结论,我们要让前缀和的和最大,我们需要把大的数放在前面,才能求更多次的和,所以我们对 \(n\) 的数列按总和从大到小排序,再求前缀和再求和即可
点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
struct node{
int sum;
vector<int> v;
};
bool cmp(node x,node y){
return x.sum > y.sum;
}
void solve(){
vector<node> a;
int n,m; cin>>n>>m;
for(int i = 1;i<=n;i++){
a.push_back({0});
for(int j = 1;j<=m;j++){
int x; cin>>x;
a[i-1].sum += x;
a[i-1].v.emplace_back(x);
}
}
sort(a.begin(),a.end(),cmp);
int ans = 0;
int now = 0;
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
now += a[i].v[j];
ans += now;
}
}
cout<<ans<<endl;
}
signed main(){
int T; cin>>T; while(T--)
solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话