ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021 CSP 赛后反思

2021-10-24 23:34:50  阅读:182  来源: 互联网

标签:sort int scanf d% CSP 2021 freopen cs 赛后


文章目录

CANDY

普及- 难度。。。
数论推一下即可。。。
代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	//freopen("candy.in","r",stdin);
	//freopen("candy.out","w",stdout);
	int n,l,r;
	scanf("%d%d%d",&n,&l,&r);
	int v=l%n;
	if(r-l+v<n) printf("%d",r-l+v);
	else printf("%d",n-1);
	return 0;
}

SORT

思路:先记录每个数据的排名,因为调换的次数较少,所以在一操作中进行重排名。将处在原、现数字中的排名加或减1,在处理相同数字的情况。(可惜我没能写出找a[x]的排名的方法,只能写排序了
小数据能过,大数据会超时。。。

#include<bits/stdc++.h>
using namespace std;
struct num{
	int s;
	int k;
	int p;
};
bool f1(num x,num y){
	if(x.s<y.s) return 1;
	else return 0;
}
bool f2(num x,num y){
	if(x.k<y.k) return 1;
	else return 0;
}
int main(){
	//freopen("sort.in","r",stdin);
	//freopen("sort.out","w",stdout);
	int n,q;
	scanf("%d%d",&n,&q);
	num a[n+1];
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i].s);
		a[i].k=i;
	}
	sort(a+1,a+1+n,f1);
	for(int i=1;i<=n;i++){
		a[i].p=i;
	}
	sort(a+1,a+n+1,f2);
	for(int i=1;i<=q;i++){
		int d;
		scanf("%d",&d);
		if(d==1){
			int x,v;
			scanf("%d%d",&x,&v);
			a[x].s=v;
		}
		else{
			int x;
			sort(a+1,a+1+n,f1);
			for(int i=1;i<=n;i++){
				a[i].p=i;
			}
			sort(a+1,a+n+1,f2);
			scanf("%d",&x);
			printf("%d\n",a[x].p);
		}
	}
	return 0;
}

NETWORK

时间来不及了,写的骗分,估摸着二十个数据点能过八个。。。

#include<bits/stdc++.h>
using namespace std;
int cs[1000000];
int main(){
	//freopen("network.in","r",stdin);
	//freopen("network.out","w",stdout);
	memset(cs,0,sizeof(cs));
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		char g[20];
		scanf("%s",g);
		int a,b,c,d,e;
		scanf("%d.%d.%d.%d:%d",&a,&b,&c,&d,&e);
		if(g[0]=='S'){
			cs[a+b*2-c+231*d+e*4]=i;
			cout<<"OK"<<endl;
		}
		else{
			if(cs[a+b*2-c+231*d+e*4]!=0){
				cout<<cs[a+b*2-c+231*d+e*4]<<endl;
			}
			else cout<<"FAIL"<<endl;
		}
	}
	return 0;
}

后来想的思路就是a,b,c,d,e都用字符串转数字来判断域名错误的情况。

FRUIT

用数组记录每个水果的存在情况,模拟。

#include<bits/stdc++.h>
using namespace std;
int main(){
	//freopen("fruit.in","r",stdin);
	//freopen("fruit.out","w",stdout);
	int n;
	scanf("%d",&n);
	int a[n+1];
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	int t=0;
	bool f[n+1];
	memset(f,0,sizeof(f));
	while(t<n){
		int u=-1;
		for(int i=1;i<=n;i++){
			if(u!=a[i]&&f[i]==0){
				printf("%d ",i);
				u=a[i];
				a[i]=-1;
				f[i]=1;
				t++;
			}
		}
		printf("\n");
	}
	return 0;
}

标签:sort,int,scanf,d%,CSP,2021,freopen,cs,赛后
来源: https://blog.csdn.net/lcy0921/article/details/120943537

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有