脚本宝典收集整理的这篇文章主要介绍了CSP-J 2021 考试总结 & 题解,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
先来吐槽一下 €€£ 的数据,第一题把我卡成了 (90),第二题卡成了 (12),最后一道题还多水了 (10) 分。
总得分:(90+12+65+40=207)。
应该得的分:(100+52+65+60=277)
如果再好一点就是:(100+52+65+100=317)
第一题:我只能说我不会写对拍,手造的几组数据全都对了。
我一不小心取到了 (n) 的这个值,所以在范围很小的时候把我卡掉了。
第二题:结构体掌握度不够,平常不怎么使用结构体的。
或者说时间也不够了,大量的时间花在了第 (3) 题。(我倒回来做的第 (2) 题)
第三题:这个怎么说呢,其实我早就知道我写出来的程序有一定概率会错,但是我就是不知道怎么改。
模拟能力太菜了属于是。
第 (4) 题:一个重大的失误,数组开小了,丢了 (20) 分
以后我要 const int N=1e...
。
第一题没什么好说的:
#include<iostream>
using namespace std;
int main(){
int n,l,r;
cin>>n>>l>>r;
int w=r-l;
int t=l%n;
if(w+t<n) cout<<w+t;
else cout<<n-1;
}
第二题就模拟一下,卡卡常也许就过了。
第三题也就一个模拟,可以投机取巧做一下。
第 (4) 题用一个 set
模拟就可以了
#include<bits/stdc++.h>
const int INF=200005;
using namespace std;
int n;
set<int>s1,s2;
int cur;
bool p;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int q;
cin>>q;
if(q){
s1.insert(i);//苹果
}
else{
s2.insert(i);//橘子
}
}
s1.insert(INF);
s2.insert(INF);
if(*s1.begin()<*s2.begin()){
p=0;
}
else p=1;
while((!p&&s1.size()>1)||(p&&s2.size()>1)){
if(!p){
cur=*s1.upper_bound(cur);
if(cur==INF){
cur=0;
if(*s1.begin()<*s2.begin()){
p=0;
}
else p=1;
cout<<endl;
continue;
}
cout<<cur<<' ';
s1.erase(cur);
p=!p;
}
else{
cur=*s2.upper_bound(cur);
if (cur==INF){
cur=0;
if(*s1.begin()<*s2.begin()){
p=0;
}
else p=1;
cout<<endl;
continue;
}
cout<<cur<<' ';
s2.erase(cur);
p=!p;
}
}
cout<<endl;
while(s1.size()>1){
cout<<*s1.begin()<<endl;
s1.erase(*s1.begin());
}
while(s2.size()>1){
cout<<*s2.begin()<<endl;
s2.erase(*s2.begin());
}
}
明年继续!
以上是脚本宝典为你收集整理的CSP-J 2021 考试总结 & 题解全部内容,希望文章能够帮你解决CSP-J 2021 考试总结 & 题解所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。