ICode9

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

2021-10-23csp-j组成绩报告

2021-10-24 13:34:29  阅读:153  来源: 互联网

标签:10 return int scanf 23csp num 2021 freopen pts


题面:

暂略,见:
P7909
P7910
P7911
P7912

代码:

candy:

数学方法,时间复杂度为常数,100 p t s pts pts
代码:

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

sort:

绞尽脑汁为正解,结果不知哪里WA了,只有8 p t s pts pts,不要太贪。
代码:

#include<bits/stdc++.h>
using namespace std;
int n,q;
struct p{
	int id,num;
}a[8030];
int pl[8030],fpl[8030];
int opt,x,v;
bool cmp(p c,p b){
	if(c.num!=b.num)
		return c.num<b.num;
	else
		return c.id<b.id;
}
void insertion_sort(int v){
	while(!cmp(a[v],a[v+1])){
		swap(a[v],a[v+1]);
		++v;
	}
	while(!cmp(a[v-1],a[v])){
		swap(a[v-1],a[v]);
		--v;
	}
}
int main(){
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout);
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;++i){
		scanf("%d",&a[i].num);
		a[i].id=i;
	}
	a[0].id=0;
	a[0].num=-1;
	a[n+1].id=n+1;
	a[n+1].num=1e9+10;
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;++i){
		pl[a[i].id]=i;
		fpl[i]=a[i].id;
	}
	for(int i=1;i<=q;i++){
		scanf("%d",&opt);
		if(opt==1){
			scanf("%d%d",&x,&v);
			a[fpl[x]].num=v;
			insertion_sort(fpl[x]);
			for(int j=1;j<=n;j++){
				pl[a[j].id]=j;
				fpl[j]=a[j].id;
			}
		}
		else{
			scanf("%d",&x);
			printf("%d\n",pl[x]);
		}
	}
	return 0;
}

network:

我应该能AC,但75 p t s pts pts,可能判ERR有什么问题。
代码:

#include<bits/stdc++.h>
using namespace std;
int n;
string s1[1005],s2[1005],opt;
map<string,int> num;
bool check(string x){
	int len=x.length();
	int p=0;
	long long num;
	for(int j=1;j<=4;j++){
		num=0;
		while(isdigit(x[p])){
			if(num==0&&x[p]==48&&p+1<len&&isdigit(x[p+1]))return false;
			num+=x[p]-48;
			if(num>255)return false;
			num*=10;
			++p;
		}
		if(j==4&&x[p]!=':')return false;
		if(j<4&&x[p]!='.')return false;
		++p;
	}
	num=0;
	while(isdigit(x[p])){
		if(num==0&&x[p]==48&&p+1<len&&isdigit(x[p+1]))return false;
		num+=x[p]-48;
		if(num>65535)return false;
		num*=10;
		++p;
		if(p==len)return true;
	}
	return false;
}
int main(){
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		cin>>opt;
		if(opt=="Server"){
			cin>>s1[i];
			if(!check(s1[i]))puts("ERR");
			else if(num[s1[i]])puts("FAIL");
			else{
				puts("OK");
				num[s1[i]]=i;
			}
		}
		else{
			cin>>s2[i];
			if(!check(s2[i]))puts("ERR");
			else if(num[s2[i]])printf("%d\n",num[s2[i]]);
			else puts("FAIL");
		}
	}
	return 0;
}

fruit:

较为暴力,70 p t s pts pts,应该用链表,但没实现。
代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[200005];
bool vis[200005];
int main(){
	//freopen("fruit.in","r",stdin);
	//freopen("fruit.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	int left=n;
	while(left>0){
		int last=-1;
		for(int i=1;i<=n;i++){
			if(vis[i])continue;
			if(a[i]!=last){
				last=a[i];
				printf("%d ",i);
				vis[i]=true;
				left--;
			}
		}
		puts("");
	}
	return 0;
}

总结:

100+8+75+70=253,一般一般,太菜了,国一悬了。
再见!普及组生涯结束!

标签:10,return,int,scanf,23csp,num,2021,freopen,pts
来源: https://blog.csdn.net/gzx20210226/article/details/120932785

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

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

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

ICode9版权所有