Codeforces Round #452 (Div. 2) 12-17 A-C 题解
来源:互联网 发布:java正则表达式捕获组 编辑:程序博客网 时间:2024/06/14 11:03
鉴于本人还是个CF黑名小菜鸟,可能写得格式不太好,思路也可能不清晰,
希望能有更多大牛指教指教,#452(DIV 2)还是可以做A 到C 。
A. Splitting in Teams
@2. 1可以随便组队, 但2就不能拆开。
分析: @1, 判断0的情况,
a、全是2 b、 或者 2个1
@2,判断1的情况,
只有可能 n=2, 1个1 和 1个2 3个1
@3,判断其他情况‘、
a、num 2 >= num 1 时只能由1来决定。
b、num 1>=num 2 先把2的全凑合,剩下的1/3.
#include<bits/stdc++.h>using namespace std;int main(){ int n,a[1000000],vis[3]={0}; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); vis[a[i]]++; } if((n==2&&vis[1]!=vis[2])||(vis[1]==0)) { printf("0\n"); } else if(n==2&&vis[1]==vis[2]) { printf("1\n"); } else if(vis[2]>=vis[1]) { printf("%d\n",vis[1]); } else if(vis[1]>vis[2]) { int ans=vis[2]+(vis[1]-vis[2])/3; printf("%d\n",ans); } return 0;}B. Months and Years
题解:先介绍了别人的日历是和国际接轨之后,出了个 n<24 的范围来考我们这些月份是否合法的。
分析:菜鸟没啥好方法,就是懂得暴力求解,把36个月列出来,如果有29天的存在就要特判,
@1、29出现两次,直接不合法,
@2、29出现过一次的话,把36个月中的每个2月都更新一次,记得把原来的还原成28;
#include<bits/stdc++.h>using namespace std;int main(){ int b[36]= { 31,28,31,30,31,30,31,31,30,31,30,31, 31,28,31,30,31,30,31,31,30,31,30,31, 31,28,31,30,31,30,31,31,30,31,30,31 }; int n,flag=0,a[30]; scanf("%d",&n); int vis[35]={0}; for(int i=0;i<n;i++) { scanf("%d",&a[i]); vis[a[i]]++; } if(vis[29]==2) { printf("NO\n"); return 0; } else { int k,j; for(int i=0;i<36&&!flag;i=k+1) { k=i; if(vis[29]==1) { b[1]=29; b[13]=28; b[25]=28; } int count=0; j=0; while(b[i]==a[j]&&j<n) { count++; i++;j++; } if(count==n) { flag=1; } } for(int i=0;i<36&&!flag;i=k+1) { k=i; if(vis[29]==1) { b[1]=28; b[13]=29; b[25]=28; } int count=0; j=0; while(b[i]==a[j]&&j<n) { count++; i++;j++; } if(count==n) { flag=1; } } for(int i=0;i<36&&!flag;i=k+1) { k=i; if(vis[29]==1) { b[1]=28; b[13]=28; b[25]=29; } int count=0; j=0; while(b[i]==a[j]&&j<n) { count++; i++;j++; } if(count==n) { flag=1; } } if(flag==1) { printf("YES\n"); } else { printf("NO\n"); } }}
C. Dividing the numbers
题解:就是把 1到n 分两份,
第一行输出是 两份求和后 之间的差值,
第二行符合条件的一份 先一个 个数 后是 符合条件的一组数。
做这题时吃了文化的亏,any of them 让我好好琢磨了半天。
才知道原来输出符合条件的一组就可以了。
分析:看图
#include<bits/stdc++.h>int main(){ int i,n,ans[60050]; while(~scanf("%d",&n)) { if(n%2==0) { if((n/2)%2==1) { printf("1\n%d ",n/2); int cnt=1; for(i=3;i<=n/2&&n!=2;i++) { if(i%2==1) { ans[cnt++]=i; ans[cnt++]=n-i+3; } } if(n==2) { printf("1\n"); } else { printf("1 "); } for(i=1;i<cnt;i++) { printf(i==cnt-1?"%d\n":"%d ",ans[i]); } } else { printf("0\n%d ",n/2); int cnt=1; for(i=1;i<=n/2;i++) { if(i%2==1) { ans[cnt++]=i; ans[cnt++]=n-i+1; } } for(i=1;i<cnt;i++) { printf(i==cnt-1?"%d\n":"%d ",ans[i]); } } } else { if(((n-1)/2)%2==1) { printf("0\n%d ",n/2); int cnt=1; int k=n+3; for(i=4;i<=k/2;i++) { if(i%2==0) { ans[cnt++]=i; ans[cnt++]=k-i+1; } } printf(n==3?"3\n":"3 "); for(i=1;i<cnt;i++) { printf(i==cnt-1?"%d\n":"%d ",ans[i]); } } else { printf("1\n%d ",n/2); int cnt=1; for(i=2;i<=n/2;i++) { if(i%2==0) { ans[cnt++]=i; ans[cnt++]=n-i+2; } } for(i=1;i<cnt;i++) { printf(i==cnt-1?"%d\n":"%d ",ans[i]); } } } } return 0;}
阅读全文
0 0
- Codeforces Round #452 (Div. 2) 12-17 A-C 题解
- Codeforces Round #452 (Div. 2) A-C题解
- Codeforces Round #241 (Div. 2) A B C题解
- Codeforces Round #292 (Div. 2) A,B,C,D 题解
- Codeforces Round #304 (Div. 2) A,B,C题解
- Codeforces Round #364 (Div. 2)(A,B,C,D) 题解
- Codeforces Round #377 (Div. 2)部分题解A+B+C!
- Codeforces Round #388 (Div. 2) A,B,C,D 题解
- Codeforces Round #395 (Div. 2) A,B,C,D 题解
- Codeforces Round #429 (Div. 2) A-C题解
- Codeforces Round #435 (Div. 2) A-C题解+D代码
- Codeforces Round #436 div 2 A B C D 题解
- Codeforces Round #439 (Div. 2) A-C题解
- Codeforces Round #439 (Div. 2) A-C题解
- Codeforces Round #443 (Div. 2) A-C 题解
- Codeforces Round #444 (Div. 2) A-C 题解
- Codeforces Round #446 (Div. 2) A-C 题解
- Codeforces Round #447 (Div. 2) A-C题解
- ajax文件 上传
- 阿里D2前端大会的部分收获
- Django技术详解(四)开发template
- JNDI 是什么
- 217. Contains Duplicate
- Codeforces Round #452 (Div. 2) 12-17 A-C 题解
- jquery+js实现图片上传及时预览
- 简单的图形剪切
- canal集群部署与java接入
- 虚函数
- ExtJs gridPanel行添加操作按钮的方法
- 深度学习: convolution (卷积)
- MockMvc详解——SpringMVC单元测试
- Linux Find命令学习实验