位运算 ZOJ 3870 Team Formation
- /*
- 题意:找出符合 A^B > max (A, B) 的组数;
- 位运算:异或的性质,1^1=0, 1^0=1, 0^1=1, 0^0=0;与的性质:1^1=1, 1^0=0, 0^1=0, 0^0=0;
- 假设A < B,一定要满足B的最高位对应A的值是0,这样才可能>B(即0^1=1);
- 然后比赛时假设A的极限是类似0111111的情况,最后假设有误;
- 题解是先把每个数最高位(1)的位置统计个数,1<<4 的意思是 000010000;
- 只要与为0,表示最高位p位置的所有数字和当前a[i]异或一定满足,累加ans;
- 位运算不熟悉, '⊕'还是别人告诉我是异或的;
- 详细解释:http://blog.csdn.net/LYHVOYAGE/article/details/45285731
- */
- #include <cstdio>
- #include <algorithm>
- #include <cmath>
- #include <iostream>
- #include <cstring>
- #include <string>
- #include <map>
- #include <set>
- using namespace std;
- const int MAXN = 1e5 + ;
- const int INF = 0x3f3f3f3f;
- int a[MAXN];
- int bit[];
- void solve(int x)
- {
- int p = ;
- while (p >= )
- {
- if (x & (<<p))
- {
- bit[p]++; return ;
- }
- p--;
- }
- return ;
- }
- int main(void) //ZOJ 3870 Team Formation
- {
- //freopen ("B.in", "r", stdin);
- int t, n;
- scanf ("%d", &t);
- while (t--)
- {
- memset (bit, , sizeof (bit));
- scanf ("%d", &n);
- for (int i=; i<=n; ++i)
- {
- scanf ("%d", &a[i]); solve (a[i]);
- }
- long long ans = ;
- for (int i=; i<=n; ++i)
- {
- int p = ;
- while (p >= )
- {
- if (a[i] & (<<p)) break;
- p--;
- }
- while (p >= )
- {
- if (!(a[i] & (<<p))) ans += bit[p];
- p--;
- }
- }
- printf ("%lld\n", ans);
- }
- return ;
- }
位运算 ZOJ 3870 Team Formation的更多相关文章
- Zoj 3870——Team Formation——————【技巧,规律】
Team Formation Time Limit: 3 Seconds Memory Limit: 131072 KB For an upcoming programming contes ...
- ZOJ 3870 Team Formation 贪心二进制
B - Team Formation Description For an upcoming progr ...
- ZOJ 3870 Team Formation 位运算 位异或用与运算做的
For an upcoming programming contest, Edward, the headmaster of Marjar University, is forming a two-m ...
- ZOJ - 3870 Team Formation(异或)
题意:给定N个数,求这N个数中满足A ⊕ B > max{A, B})的AB有多少对.(A,B是N中的某两个数) 分析: 1.异或,首先想到转化为二进制. eg:110011(A)和 1(B)- ...
- 费用流 ZOJ 3933 Team Formation
题目链接 题意:两个队伍,有一些边相连,问最大组对数以及最多女生数量 分析:费用流模板题,设置两个超级源点和汇点,边的容量为1,费用为男生数量.建边不能重复建边否则会T.zkw费用流在稠密图跑得快,普 ...
- ZOJ 3933 Team Formation
费用流裸题......比赛的时候少写了一句话....导致增加了很多无用的边一直在TLE #include<cstdio> #include<cstring> #include& ...
- ZOJ 3870:Team Formation(位运算&思维)
Team Formation Time Limit: 2 Seconds Memory Limit: 131072 KB For an upcoming programming contest, Ed ...
- AndyQsmart ACM学习历程——ZOJ3870 Team Formation(位运算)
Description For an upcoming programming contest, Edward, the headmaster of Marjar University, is for ...
- zoj--3870--Team Formation(位运算好题)
Team Formation Time Limit: 3000MS Memory Limit: 131072KB 64bit IO Format: %lld & %llu Submit ...
随机推荐
- editplus快捷键大全之editplus文件快捷键
editplus快捷键大全之editplus文件快捷键 新建普通文本 Ctrl+N 新建普通的文本文档 新建浏览器窗口 Ctrl+Shift+B 新建浏览器窗口 新建 HTML 页 Ctrl+Shif ...
- Antenna Placement(匈牙利算法 ,最少路径覆盖)
Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6991 Accepted: 3466 ...
- E. Tetrahedron(数学推导)
E. Tetrahedron 分类: AC路漫漫2013-08-08 16:07 465人阅读 评论(0) 收藏 举报 time limit per test 2 seconds memory lim ...
- 最长不下降子序列 O(nlogn) || 记忆化搜索
#include<stdio.h> ] , temp[] ; int n , top ; int binary_search (int x) { ; int last = top ; in ...
- 关于Eclipse部署openfire3.8.2源码的体会
因为公司要做人际银行的一个项目需要openfire(服务器)+asmack(客户端),所以需要对消息的推送及消息发送知识的积累.所以需要研究xmpp,以前不是很了解这个技术,现在需要学习.首先就得部署 ...
- [BZOJ3872][Poi2014]Ant colony
[BZOJ3872][Poi2014]Ant colony 试题描述 There is an entrance to the ant hill in every chamber with only o ...
- object-c面向对象2
我们知道在c#中有访问私有成员变量的get 和set方法.这个目的是用来公开实力对象的私有变量.我看了下ios的访问修饰符.也就是private,public,protected.这些基本上都和c# ...
- 在cmd命令行中弹出Windows对话框
有时候用bat写一些小脚本最后会弹出对话框提示操作成功,可以用mshta.exe来实现,它是Windows系统的相关程序,用来执行.HTA文件,一般计算机上面都有这个程序,实现如下: mshta vb ...
- codeforces A. Cinema Line 解题报告
题目链接:http://codeforces.com/problemset/problem/349/A 题目意思:题目不难理解,从一开始什么钱都没有的情况下,要向每一个人售票,每张票价格是25卢布,这 ...
- Balance(poj 1837)
题意:一个天平上有C个挂钩,第i个挂钩的位置为C[i],C[i] < 0表示该挂钩在原点的左边,C[i] > 0表示该挂钩在原点的右边:然后给出G个钩码的重量,问有多少种挂法使得天平保持平 ...