ccf刷题记01
来源:互联网 发布:合肥网络总监招聘 编辑:程序博客网 时间:2024/05/19 22:07
这个队长当的有点突然,据说是被张老师推荐到赵老师那里的,天将降大任于斯人也,那么肯定就要加油了啊,起码不能辜负了老师的期待吧,于是开启此刷题记,半个月时间,加油吧
先补上之前做的题吧
先来两题才做的题
201703-1 分蛋糕
思路:按惯例第一题都是水题的,简单模拟,so easy
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;int a[maxn];int main(){ int n,k; while(scanf("%d%d",&n,&k)!=EOF) { int lef = k; int sum = 0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); lef -= a[i]; if(lef <=0) { lef = k; sum++; } //cout << lef << " " << sum << endl; } if(lef < k) { sum++; } printf("%d\n",sum); } return 0;}
201703-2 学生排队
思路:又是个队列模拟,数组下标的理解思路一定要清晰,一点点小的错误就能wa到生无可恋,难度不大,两个数组,一个记录队列相应位置的人,一个记录人在队列中的位置,关键就在细心吧
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1010;int pos[maxn];int que[maxn];int main(){ int n,m; /*while(*/scanf("%d%d",&n,&m);/*!=EOF) {*/ for(int i=1;i<=n;i++) { pos[i] = i; que[i] = i; } for(int i=0;i<m;i++) { int p,q; scanf("%d%d",&p,&q); if(q==0) { continue; } else if(q>0) { for(int j=pos[p]+1;j<=pos[p]+q;j++) { que[j-1] = que[j]; pos[que[j]]--; } que[pos[p]+q] = p; pos[p] += q; } else { for(int j=pos[p]-1;j>=pos[p]+q;j--) { que[j+1] = que[j]; pos[que[j]]++; } que[pos[p]+q] = p; pos[p] += q; } /*for(int i=1;i<=n;i++) { printf("%d ",que[i]); } printf("\n");*/ /*for(int i=1;i<=n;i++) { printf("%d ",pos[i]); } printf("\n");*/ } for(int i=1;i<n;i++) { printf("%d ",que[i]); } printf("%d\n",que[n]); //} return 0;}
201612-1 中间数
再来看两个个去年做的题吧
思路:寻找中位数,简单判断就好了
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int a[1010];int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } sort(a,a+n); bool no = true; int tup=0,tdown=0; if(n%2!=0) { int cen = (n-1)/2; while(tup<=cen&&a[cen]==a[cen+tup]) { tup++; } while(tdown<=cen&&a[cen]==a[cen-tdown]) { tdown++; } if(tup==tdown) { printf("%d\n",a[cen]); no = false; } } else { int cenup = n/2; int cendow = cenup-1; if(a[cenup]==a[cendow]) { while(tup<=cendow&&a[cenup]==a[cenup+tup]) { tup++; } while(tdown<=cendow&&a[cendow]==a[cendow-tdown]) { tdown++; } if(tup==tdown) { printf("%d\n",a[cenup]); no = false; } } } if(no) printf("%d\n",-1); return 0;}
201612-2 工资计算
思路:又是纯模拟,分类讨论,注意一下精度,没啥大问题
#include <iostream>#include <cstdio>using namespace std;int main(){ int t,sum=0,temp; scanf("%d",&t); if(t<=3500) { sum=t; } else if(t>3500&&t<=4955) { temp=t-3500; temp=(int)((double)(temp)/0.97+1e-9); sum=temp+3500; } else if(t>4955&&t<=7655) { temp=t-4955; temp=(int)((double)(temp)/0.9+1e-9); sum=temp+5000; } else if(t>7655&&t<=11255) { temp=t-7655; temp=(int)((double)(temp)/0.8+1e-9); sum=temp+8000; } else if(t>11255&&t<=30755) { temp=t-11255; temp=(int)((double)(temp)/0.75+1e-9); sum=temp+12500; } else if(t>30755&&t<=44755) { temp=t-30755; temp=(int)((double)(temp)/0.7+1e-9); sum=temp+38500; } else if(t>44755&&t<=61005) { temp=t-44755; temp=(int)((double)(temp)/0.65+1e-9); sum=temp+58500; } else if(t>61005) { temp=t-61005; temp=(int)((double)(temp)/0.55+1e-9); sum=temp+83500; } printf("%d\n",sum); return 0;}
再来两题大一时做的题,看看当时自己的代码风格,满满的回忆啊,当时用的还是dev
201604-1 折点计数
思路:水题,扫一遍,统计折点就好了
#include<cstdio>using namespace std;int main(){int n,d1,d2,a1,a2,sum=0;scanf("%d",&n);if(n==1){scanf("%d",&a1);printf("%d\n",0);}else{scanf("%d%d",&a1,&a2);d1=a2-a1; if(n==2)printf("%d\n",0);else{for(int i=2;i<n;i++){scanf("%d",&a1);d2=a1-a2;if(d1*d2<0)sum++;d1=d2;a2=a1;}printf("%d\n",sum);}}}
201604-2 俄罗斯方块
思路:模拟俄罗斯方块,现在基本已经不太能看懂当年的代码思路了,也不太想看了,感觉应该就是个模拟,反正当年写了8个循环,哈哈,厉害了
#include<cstdio>using namespace std;int main(){int g[15][10],smg[4][4],lo[4],hi[4],su[4];int po,ma,mi;for(int i=0;i<4;i++){hi[i]=16;lo[i]=20;}for(int i=0;i<15;i++){for(int j=0;j<10;j++){scanf("%d",&g[i][j]);}}for(int i=0;i<4;i++){for(int j=0;j<4;j++){scanf("%d",&smg[i][j]);}}scanf("%d",&po);for(int i=0;i<4;i++){for(int j=3;j>=0;j--){if(smg[j][i]==1){lo[i]=4-j;}}}for(int i=0;i<4;i++){for(int j=0;j<15;j++){if(g[j][i+po-1]==1){hi[i]=j;}}}for(int i=0;i<4;i++){ma=16;mi=4;su[i]=lo[i]+hi[i];if(su[i]<ma){ma=su[i];}if(lo[i]<mi){mi=lo[i];}}ma=ma-mi-1;for(int i=po-1;i<po+3;i++){for(int j=ma,k=mi;j>ma-5+mi;j--,k++){if(g[j][i]==0&&smg[k][i-po+1]==1){g[j][i]=1;}}}for(int i=0;i<15;i++){for(int j=0;j<9;j++){printf("%d ",g[i][j]);}printf("%d\n",g[i][9]);}return 0;}
然而似乎wa了,尴尬,还是自己看看吧
算了,放弃了,还是自己写吧
细节,还是细节问题,数组界限与坐标,大脑一定要清晰
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;int screen[20][20];int block[4][4];int hig[20];int low[4];int main(){ memset(hig,0,sizeof(hig)); for(int i=0;i<4;i++) { low[i] = 99; } for(int i=15;i>=1;i--) { for(int j=1;j<=10;j++) { scanf("%d",&screen[i][j]); if(screen[i][j] == 1&&hig[j] == 0) { hig[j] = i; } } } for(int i=3;i>=0;i--) { for(int j=0;j<4;j++) { scanf("%d",&block[i][j]); if(block[i][j] == 1) { low[j] = i; } } } bool emp = true; for(int j=0;j<4;j++) { if(low[j] < 99) { emp = false; break; } } int beg; scanf("%d",&beg); if(!emp) { int sto = -99; for(int j=0;j<4;j++) { if(hig[j+beg]-low[j]>sto) { sto = hig[j+beg]-low[j]; } } sto++; for(int i=sto;i<sto+4;i++) { if(i<=0) { continue; } if(i>15) { break; } for(int j=0;j<4;j++) { screen[i][beg+j] |= block[i-sto][j]; } } } for(int i=15;i>=1;i--) { for(int j=1;j<10;j++) { printf("%d ",screen[i][j]); } printf("%d\n",screen[i][10]); } return 0;}
文章地址:http://blog.csdn.net/owen_q/article/details/78208071
阅读全文
1 0
- ccf刷题记01
- ccf刷题记终级版01
- ccf刷题记02
- ccf刷题记03
- ccf刷题记04
- OI刷题记录
- LeetCode刷题记
- OI刷题记录~
- leetcode刷题记录
- 刷题记录
- LeetCode刷题记
- LeetCode刷题记 2
- LeetCode刷题记 3
- 6.22刷题记录
- 7.26-刷题记录
- hdu 刷题记录
- 面试刷题记录
- 每日刷题记录
- 1.2 PCI&PCIE ExpansionOption ROM
- Spring Boot参考教程(九)配置上传下载
- String类的常用方法(附 StringBuilder)
- hdu1501 zipper【记忆化搜索】【动态规划】
- Eclipse反编译插件下载和安装
- ccf刷题记01
- Udacity 数据分析入门总结
- 使用xorm将结构体转为sql文件
- vim配色指南
- 字符型和String类型总结
- BlueBorne 蓝牙漏洞深入分析与PoC
- strtok函数
- 机器学习概念总结笔记(四)——KMeans、混合高斯模型、LDA、PLSA、Apriori、FP-Growth、
- Python与matlab在存储三维数组上的区别