CSP-J 2021 考试总结 & 题解

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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,请注明来意。
标签: