第12届浙江省大学生程序设计大赛 解题报告
2016-03-24 16:14
423 查看
题目连接
1.Ace of Aces
签到题(这道题我们的学长参赛时开场5分钟就过了,全场第一)
2.Team Formation
题目大意:要从n个学生中选出两个参加某比赛,给出每个学生的skill level。若某两个学生的skill level值分别为 a ,b,当a ^ b > max(a,b),该两个学生可以组合参赛。问:共有几种组合方式?
思路:如果遍历所有的可能,那么时间会超。思考:异或的特点是什么?同一位上相同则为0,相异则为1。那么,两个数a b异或,a的位数位l1,b的位数为l2,假设(l1 >= l2),若a的l1位上数字为0,则a^b < a,否则a^b > a;
也就是说,判断两个数异或只需要根据他们的最高位的情况。bit【i】代表最高位为i的数字的个数。
3.
4.
1.Ace of Aces
签到题(这道题我们的学长参赛时开场5分钟就过了,全场第一)
#include<iostream> #include<algorithm> #define maxn 1005 using namespace std; int nu[maxn]; void init() { int i; for(i = 0;i < maxn;i ++) nu[i] = 0; } int main(void) { int cas,n,a,flag = 0; cin >> cas; while(cas --) { init(); flag = 1; cin >> n; for(int i = 0;i < n;i ++){ cin >> a; nu[a] ++; } int ans = 0,tmp; for(int i = 0;i < maxn;i ++) { if(ans < nu[i]){ ans = nu[i]; tmp = i; } } for(int i = 0;i < maxn;i ++) { if(ans == nu[i] && i !=tmp){ flag = 0; break; } } if(!flag) cout << "Nobody" << endl; else{ cout << tmp << endl; } } return 0; }
2.Team Formation
题目大意:要从n个学生中选出两个参加某比赛,给出每个学生的skill level。若某两个学生的skill level值分别为 a ,b,当a ^ b > max(a,b),该两个学生可以组合参赛。问:共有几种组合方式?
思路:如果遍历所有的可能,那么时间会超。思考:异或的特点是什么?同一位上相同则为0,相异则为1。那么,两个数a b异或,a的位数位l1,b的位数为l2,假设(l1 >= l2),若a的l1位上数字为0,则a^b < a,否则a^b > a;
也就是说,判断两个数异或只需要根据他们的最高位的情况。bit【i】代表最高位为i的数字的个数。
#include<iostream> #include <cstring> #include<algorithm> #define maxn 100005 using namespace std; int skill[maxn],bit[32]; void get_bit(int n) { int l = 31; while(l >= 0) { if(n & (1<<l)) { bit[l]++; return ; } l--; } return ; } int main(void) { int i,j,l; int cas,n,a,flag = 0; int ans ; cin >> cas; while(cas --) { memset(bit, 0, sizeof(bit)); ans = 0; cin >> n; for(int i = 0;i < n;i ++){ cin >> skill[i]; get_bit(skill[i]); } for(i = 0;i < n;i ++) { l = 31; while(l >= 0) { if(skill[i] & (1 << l)) break; l --; } l --; while(l >= 0) { if(! (skill[i] & (1 << l))) ans += bit[l]; l --; } } cout << ans <<endl; } return 0; }
3.
4.
相关文章推荐
- [Spark]Spark与Anaconda配置(Python)
- CCF201312真题及题解(能力有限,欢迎交流)
- Linux下SVN服务器的搭建
- 跨平台linux, windows, android系统识别
- 编程易错小结 (一)
- Fibonacci 数列
- NSNotificationCenter--消息机制
- 旋转矩阵
- 技巧积累--java
- Android 学习笔记(1) —— TextView
- Android 学习笔记(2) —— EditView
- 对象的内存布局
- [LeetCode][链表]Remove Duplicates from Sorted List
- cuda,内存变量定义
- 如果说人生是自我编写的程序
- 基于ubuntu13.04搜狗输入法安装方法
- 七种排序算法---Java实现
- java 遍历的4种方法
- digit image process --- python-skimage
- IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目