ZOJ 3870 Team Formation
来源:互联网 发布:windows监控工具 编辑:程序博客网 时间:2024/05/19 21:43
传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3870
已知n个数组,求a^b>max(a,b)这样的组合有多少种
将一个数按二进制写
比如 a=110110,也就是要求满足条件的b有多少。那么只能是某个0变为1,且之前的数不变,所以b的最高位一定是a为0的那位
f[i]表示最高位为i位的数有多少个,累加即可
代码如下:
#include<cstdio>#include<cstring>using namespace std;int T;int n;int ans;int s[100005];int d[40];int bit(int x){for (int i=0;;i++){if (x==(1<<i)){return i;}if (x<(1<<i)){return i-1;}}}int main(){scanf("%d",&T);while (T--){scanf("%d",&n);memset(d,0,sizeof(d));for (int i=1;i<=n;i++){scanf("%d",&s[i]);d[bit(s[i])]++;}ans=0;for (int i=1;i<=n;i++){for (int j=0;j<=bit(s[i]);j++){if ((s[i]&(1<<j))==0){ans+=d[j];}}}printf("%d\n",ans);}}
0 0
- ZOJ 3870 Team Formation
- ZOJ 3870 Team Formation
- ZOJ 3870 Team Formation
- zoj #3870:Team Formation
- ZOJ 3870 Team Formation
- ZOJ-3870-Team Formation
- ZOJ-3870 Team Formation
- ZOJ 3870:Team Formation【技巧】
- ZOJ 3870 Team Formation(数学)
- ZOJ 3870 Team Formation(异或)
- [水+数学] zoj 3870 Team Formation
- ZOJ 3870 Team Formation(位运算)
- ZOJ 3870 - Team Formation(数学)
- zoj 3870 Team Formation (数位统计问题)
- ZOJ 3870 Team Formation (异或运算)
- ZOJ 3870 Team Formation 位运算
- zoj 3870 Team Formation 位运算
- ZOJ Team Formation 3870【位运算】
- 翻硬币问题
- 设计模式总结
- 白话Spring(基础篇)---IOC
- epool边沿触发和水平触发
- Android之MVC模式
- ZOJ 3870 Team Formation
- ZOJ 3844Easy Task
- HDU 2577 How to Type
- SGU 104 Little shop of flowers
- POJ 1636 Prison rearrangement
- Andndroid:ListView缓存机制及BaseAdapter
- Floyd-Warshall算法的原型
- stm32之assert_param 函数
- 天声人語 20160228 小舟で気づく温暖化