VJ结营测试
A
这题其实自己画一下图可以发现当奇数行为每行都为W,偶数行为W与R交替出现,就可以得到满足题意的图形了。
点击查看代码
#include<bits/stdc++.h> using namespace std; void solve() { int n; cin>>n; for(int i=1;i<=n;i++){ if(i%2==1){ for(int j=1;j<=n;j++) cout<<'W'; cout<<endl; } else { for(int j=1;j<=n;j++){ if(j%2==1) cout<<'W'; else cout<<'R'; } cout<<endl; } } } signed main() { int t=1; while(t--) { solve(); } return 0; }
B
这题的思路就是你可以把它想象成找多少个不重复的线段区间,我们将每个区间按尾部端点大小进行排序,然后比较前一个区间的尾部和下一个区间的头部,若头部大于等于那个尾部,答案就加上1
点击查看代码
#include<bits/stdc++.h> using namespace std; struct a{ int h;//每个区间的头和尾巴; int t; }; bool cmp(a&x,a&y){ return x.t<y.t;//让每个区间按尾部大小进行排序 } int solu(vector<a>&ve){ if(ve.empty()) return 0; int cnt=1; int end=ve[0].t; for(int i=1;i<ve.size();i++) { if(ve[i].h>=end)//后一个区间的头大于等于前一个区间的尾; { cnt++; end=ve[i].t; } } return cnt; } void solve() { int n,k; cin>>n>>k; vector<a>ve(k); for(int i=0;i<k;i++){ cin>>ve[i].h>>ve[i].t; } sort(ve.begin(),ve.end(),cmp); cout<<solu(ve); } int main() { int t=1; while(t--){ solve(); } }
C
这题将故事篇幅排序一下然后算一下前缀和,在通过upper_bound找到第一个大于该数的下标即可
点击查看代码
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+5; void solve() { ll n,k,a[N],sum[N],b[N]; cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=k;i++) cin>>b[i]; sort(a+1,a+n+1); for(int i=1;i<=n;i++) { sum[i]=sum[i-1]+a[i]; } for(int i=1;i<=k;i++) { ll m=upper_bound(sum,sum+n,b[i])-sum; if(sum[m]<=b[i]) cout<<n<<" "; else cout<<m-1<<" "; } } int main() { int t=1; while(t--) { solve(); } return 0; }
D
这题有几个点需要注意,开头必须是(,最后必须是 ),而且如果n为奇数就无法满足,题意应该是让我们验证正确的括号形式,(()()()()),((((()),正括号和反括号数量要相等,且从左往右数时反括号的数不能多于正括号,开一个计数指针,若计数为负数则不符合
点击查看代码
#include <bits/stdc++.h> using namespace std; void solve() { int n,count1=0; string s; cin>>n; cin>>s; if(n%2==1) cout << "NO"; else{ for(int i=0;i<s.size();i++){ if(s[i]=='(') count1++; if(s[i]==')') count1--; if(count1<0){ cout<<"NO"; return ; } } if(s[0]=='('&&s[s.size()-1]==')'&&count1==0){ cout<<"YES"; } else cout<<"NO"; } } int main() { solve(); return 0; }
E
要让总积分最高,那么只需要让队伍实力两两不相同即可,先给队伍实力按照升序排序,若下一个队伍的实力小于等于前一个队伍的实力,让下一个队伍等于前一个队伍的实力+1
点击查看代码
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+5; void solve() { ll n,a[N],ans=0; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } sort(a,a+n); for(int i=1;i<n;i++){ if(a[i]<=a[i-1]){ ans+=a[i-1]-a[i]+1; a[i]=a[i-1]+1; } } cout<<ans; } int main() { int t=1; while(t--){ solve(); } return 0; }
F
高精度加法,模板题
点击查看代码
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+5; vector<int> add(vector<int>&A,vector<int>&B) { vector<int>C; int t=0; for(int i=0;i<A.size()||i<B.size();i++){ if(i<A.size()) t+=A[i]; if(i<B.size()) t+=B[i]; C.push_back(t%10); t/=10; } if(t) C.push_back(t); return C; } void solve() { string a,b; cin>>a>>b; vector<int>A,B; for(int i=a.size()-1;i>=0;i--) { A.push_back(a[i]-'0'); } for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0'); auto C=add(A,B); for(int i=C.size()-1;i>=0;i--){ cout<<C[i]; } } int main() { int t=1; while(t--){ solve(); } return 0; }
J
这一题虽然是分类讨论cax,xat,cxt,但是有很多细节需要注意,确保每个字母的顺序是对的,先讨论cax和cxt,再讨论xat,讨论cax时注意a不可以在最末尾,讨论cxt的时候注意t不可以在c的后面,讨论xat的时候把0位留给x,从第一位开始找
点击查看代码
#include <bits/stdc++.h> using namespace std; void solve() { int n,cntc=0,cnta=0,cntt=0,posa,posc,post; string s; cin>>s; for(int i=0;i<s.size();i++) { //先整个扫一遍分类讨论ca,ct,at,cat; if(s[i]=='c'&&cntc==0) {//找第一个c cntc=1; posc=i; } if(s[i]=='a'&&cntc==1&&cnta==0){//找第一个c后面的第一个a,cntc=1才标记,这个条件就有posa>posc了 cnta=1; posa=i; } if(s[i]=='t'&&cntc==1) {//找第一个c后面的t post=i; cntt=1; } } //cax if(cntc&&cnta&&posa+1<s.size()){ cout<<posc+1<<" "<<posa+1<<" "<<posa+2; }//cxt else if(cntc&&cntt&&posc+1<post)//最低满足c后面第二位是t即可 { cout<<posc+1<<" "<<posc+2<<" "<<post+1; } else {//xat cnta=0,cntt=0;//记得重新标记一下 for(int i=1;i<s.size();i++) //从1开始第0个位置留给x { if(s[i]=='a'&&cnta==0){ cnta=1; posa=i; } if(s[i]=='t'&&cnta==1){ cntt=1; post=i; break; } } if(cntt&&cnta){ cout<<1<<" "<<posa+1<<" "<<post+1; return; } cout<<-1; } } int main() { int t=1; while(t--) { solve(); } return 0; }
posted on 2024-03-03 15:30 swj2529411658 阅读(11) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人