2021 CSP 赛后反思
2021/10/24 23:39:48
本文主要是介绍2021 CSP 赛后反思,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- CANDY
- SORT
- NETWORK
- FRUIT
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; }
这篇关于2021 CSP 赛后反思的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享