3.22第二次周赛总结
来源:互联网 发布:2016广联达软件购买 编辑:程序博客网 时间:2024/05/16 12:37
20/32····这次周赛还是大部分没有算法。。也让我发现了自己思维的不足。。估计是刷题刷的太少了吧。
A题很快就出了,去做B题,觉得是贪心,,但是感觉还是想法出了点问题,应该要从大的开始取。。我变成从小的开始取,,搞了半天一直错,快崩溃了。
这时候发现好多人出了D,我就跑去看D,感觉就是难度不算大,但是要避免超时,我一开始直接遍历就妥妥的超时了,本来想写二分,奈何二分写的少,不是太会写,后来改成从中间向两边进行查询,就没事了。。后来听大一学长讲解之后,STL里面有自带的二分查找。。回去学习了一下。。确实比较好用。。
A了D之后,赶快回去写B,测了几组数据发现之前的从小开始取好像有点问题,然后从大开始取。。。赶快改啊啊啊啊啊啊。。。改完交了还是WA,觉得不科学。。仔细看了下代码,发现有一处地方。。s[0]写成s[n-1]没有改回来。。这时候还剩十分钟,怀着激动的心情交了终于过了orzzzzzzzzz 然后就等于结束了吧 10分钟开不了一题了。。。
A代码:
#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<algorithm>#define M 1009#define INF 0x3fffffffusing namespace std;int isnot_prime(int a){for(int i = 2;i*i <= a;i++){if(a%i==0) return 1;}return 0;}int main (){int n;scanf("%d",&n);for(int i = 2;i < n;i++){if(isnot_prime(i)&&isnot_prime(n-i)){printf("%d %d\n",i,n-i);break;}}return 0;}
B题代码:
#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<algorithm>#define M 2009#define INF 0x3fffffffusing namespace std;int s[M];int cmp(int a,int b){return a > b;}int main (){int n,k;int ans = 0;scanf("%d %d",&n,&k);for(int i = 0;i < n;i++)scanf("%d",&s[i]);sort(s,s+n,cmp);int m = 0;//int i = 0;int q = n-k;if(q>0){while(m<q) //第几个人 {ans += 2*(s[m]-1);m += k;}ans += 2*(s[m]-1);printf("%d\n",ans);}elseprintf("%d\n",2*(s[0]-1));return 0;}
D题一开始写的
#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<algorithm>#define M 1000500#define INF 0x3fffffffint s[M];int mark[M];struct state{int left,right;}a[M];using namespace std;int main (){int n;scanf("%d",&n);for(int i = 1;i <= n;i++)scanf("%d",&s[i]);a[1].left = 1;mark[a[1].left] = 1;a[1].right = s[1];mark[a[1].right] = 1;for(int i = 2;i <= n;i++){a[i].left = a[i-1].right+1;mark[a[i].left] = i;a[i].right = a[i-1].right+s[i];mark[a[i].right] = i;}int m;scanf("%d",&m);for(int i = 0;i < m;i++){int temp;scanf("%d",&temp);if(mark[temp]==0){for(int j = temp;j<=1000000;j++){if(mark[j]!=0){printf("%d\n",mark[j]);goto out;}}for(int j = temp;j>=1;j--){if(mark[j]!=0){printf("%d\n",mark[j]);goto out;}}}else printf("%d\n",mark[temp]);out:;}return 0;}
D题使用STL二分查找:
#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<algorithm>#define M 1000500#define INF 0x3fffffffint s[M];int a[M];using namespace std;int main (){int n;scanf("%d",&n);for(int i = 1;i <= n;i++)scanf("%d",&s[i]);a[1]= 1;a[2] = s[1];for(int i = 3;i <= 2*n;i++){if(i%2!=0)a[i] = a[i-1]+1;elsea[i] = a[i-2]+s[i/2];}int m;scanf("%d",&m);for(int i = 0;i < m;i++){int temp;scanf("%d",&temp);int *iter = lower_bound(a, a+2*n,temp);if((iter-a)%2==0)printf("%d\n",(iter-a)/2);elseprintf("%d\n",(iter-a)/2+1);}return 0;}
0 0
- 3.22第二次周赛总结
- 第二次周总结---在路上
- 第二次总结
- 第二次月赛总结(11.27)
- HYNU 第二次周赛题解
- Jsp-->第二次上课总结
- 第二次练习总结
- 指针的第二次总结
- 传智播客第二次测试总结
- 第二次测试总结
- 测试基础第二次总结
- 第二次随机组队总结
- 第二次,软考总结
- 10.3第二次总结
- 第二次任务总结
- 第二次自考总结
- 第二次自考总结
- 第二次考核问题总结
- Introduction to the t Distribution (non-technical)
- 数据库锁
- 【009】【JVM——类加载机制】
- [BZOJ1031][JSOI2007]字符加密Cipher && 后缀数组
- Gradle 修改 Maven 仓库地址
- 3.22第二次周赛总结
- MD5算法使用简析
- 调试的代码和调试的二进制文件要尽量一致
- 鼓励“鼓捣”的活动和组织
- php开发之表单
- windows对windows虚拟机共享
- C语言查漏补缺
- 每日一题6:位图向量排序
- 快速实现 ListView下拉,图片放大刷新操作