2016EC-Final
来源:互联网 发布:软件设计师证书有效期 编辑:程序博客网 时间:2024/06/08 17:45
A - Number Theory Problem
- 题意:给数N,从1到2^N的可以写成2^k-1,且能被7整除的数的个数
- 题解:枚举一下发现规律,n每3个就有一个可以被7整除
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ int caset,n,t = 1; scanf("%d",&caset); while(caset--) { scanf("%d",&n); printf("Case #%d: %d\n",t++,n/3); } return 0;}
D - Ice Cream Tower
- 题意:n个冰淇淋球,每k个冰淇淋球可以做成一个冰淇淋。
- 并且由于稳定性,这K个球还必须满足上下相邻的下面比上面大至少两倍
- 先给出n个球的质量问能做成多少个冰淇淋
- 题解:n个冰淇淋球,每k个可以作为一个冰淇淋,最多可以做成n/k个
- 要判断最多能做多少个,我们可以二分答案 n/k;
- 然后要判断能否做成 m 个冰淇淋 , 对 m 进行检验:
- 检验标准是:首先对B[]排序后将前m个取出来作为m个冰淇淋的顶端,
- 也就是A[]的前m个=B[]的前m个,之后选A[i]时,贪心地去找满足B[p]>2×A[i-m]的B[p]作为A[i],
- 这样p最多就只跑一遍(线性),如果能构成表示检验返回结果成功,反之返回结果失败。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 3e5+10;int b[maxn],a[maxn];int n,k;bool check(int mid){ for(int i=0;i<mid;i++) a[i] = b[i]; int pos = mid; for(int i=mid;i<mid*k;i++) { while(b[pos]<a[i-mid]*2 && pos < n) pos++; if(pos == n) return false; a[i] = b[pos++]; } return true;}int main(){ int caset,t = 1; scanf("%d",&caset); while(caset--) { scanf("%d%d",&n,&k); for(int i=0;i<n;i++) scanf("%d",&b[i]); sort(b,b+n); int l = 0,r = n/k,ans = 0; while(l <= r) { int mid = (r + l) >> 1; if(check(mid)) ans = mid,l = mid+1; else r = mid - 1; } printf("Case #%d: %d\n",t++,ans); } return 0;}
L - World Cup
- 题意:就是有4个人在一个组,每两个人要进行一场比赛总共六场比赛
- 每一次比赛有赢的一方加3分,输的一方不加分,如果平局都加上1分。
- 给你4个人的最终的得分,问你得分是否唯一,唯一 Yes,不唯一 No,如果不可能有这样的比赛 Wrong Scoreboard;
- 题解:由于总共6场比赛,每场比赛总共3种情况,就3^6种情况
- 利用递归打出所有情况的表。
- 注意输入的4个数要先判断是否合法。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int dir[6][2] = {1,2,1,3,1,4,2,3,2,4,3,4};const int win[3][2] = {3,0,0,3,1,1};const int mul[5] = {0,1000,100,10,1};const int maxn = 1e5+10;int vis[maxn];int inp[4];void init(int pos,int sum){ if(pos == 6){ vis[sum]++; return; } int temp; for(int i=0;i<3;i++){ temp = sum; temp += win[i][0]*mul[dir[pos][0]]; temp += win[i][1]*mul[dir[pos][1]]; init(pos+1,temp); }}int main(){ init(0,0); int caset,t = 1; scanf("%d",&caset); while(caset--) { bool flag = true; for(int i=0;i<4;i++){ scanf("%d",&inp[i]); if(inp[i] < 0 || inp[i] > 9) flag = false; } printf("Case #%d: ",t++); if(flag) { int sum = 0; for(int i=0;i<4;i++) sum+=inp[i]*mul[i+1]; if(!vis[sum]) printf("Wrong Scoreboard\n"); else if(vis[sum] == 1) printf("Yes\n"); else printf("No\n"); } else printf("Wrong Scoreboard\n"); }}
阅读全文
0 0
- 2016EC-Final
- 2016 EC-FINAL 一个属于菜鸟acmer的EC-FINAL
- 2016ICPC-EC-Final流水账
- 2016上海站EC-final总结!
- 2015 EC-Final 游记
- EC-final 打铁心得
- 2016 EC-Final Problem D. Ice Cream Tower(二分+贪心)
- EC-Final之金工实习
- EC-Final之质因子
- 第40届ICPC EC-final 总结
- 2015 ACM-ICPC 上海 EC-Final 总结
- ec-final 上海打铁之旅
- Regionals 2015 >> Asia - EC Final>> Multiplication Table
- 2017 ACM/ICPC EC Final 参赛感受
- EC (-)
- EC
- Regional 2015 - Asia EC Final - C Suffixes and Palindromes
- EC Final 2015(Suffixes and Palindromes-差分约束)
- 【Scikit-Learn 中文文档】聚类
- VS2013+openCV3.2.0配置
- hibernate系列七:多对一关联配置及案例
- 北四村的蚁族程序员:面朝西二旗,冬天盼暖气
- 剑指offer——面试题46:求1+2+ ... +n 之和
- 2016EC-Final
- centos7配置anaconda和mysql
- 你从来没了解过的CSS浮动
- Mac 安装mysql
- 【Scikit-Learn 中文文档】协方差估计 / 经验协方差 / 收敛协方差 / 稀疏逆协方差 / Robust 协方差估计
- PAT乙级(Basic Level)真题
- 【Scikit-Learn 中文文档】双聚类
- Linux tinyhttpd编译总结
- 为什么不能和程序媛谈恋爱?