hdu 4768 异或运算
来源:互联网 发布:5月网络主播黑名单 编辑:程序博客网 时间:2024/05/17 22:48
http://acm.hdu.edu.cn/showproblem.php?pid=4768
貌似很多人是用的二分
但是更好的做法貌似还是异或
对于第k个人,如果他接到偶数个传单,那么异或的结果还是0
就是说op记录所有收到传单的人次的总的异或值,那么因为只有一个是收到奇数次,所以异或值就是他的编号,至于收到几次,在O(n)可以计算
//#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <cstring>#include <algorithm>#include <string>#include <iostream>#include <iomanip>#include <cmath>#include <map>#include <set>#include <queue>using namespace std;#define ls(rt) rt*2#define rs(rt) rt*2+1#define ll long long#define ull unsigned long long#define rep(i,s,e) for(int i=s;i<e;i++)#define repe(i,s,e) for(int i=s;i<=e;i++)#define CL(a,b) memset(a,b,sizeof(a))#define IN(s) freopen(s,"r",stdin)#define OUT(s) freopen(s,"w",stdout)const ll ll_INF = ((ull)(-1))>>1;const double EPS = 1e-8;const double pi = acos(-1.0);const int INF = 100000000;const int MAXN = 20010 +20;int a[MAXN],b[MAXN],c[MAXN],n;int main(){ while(~scanf("%d",&n)){ int op=0,cnt=0; for(int i=0;i<n;i++) { scanf("%d%d%d",&a[i],&b[i],&c[i]); for(int j=a[i];j<=b[i];j+=c[i]) op^=j; } for(int i=0;i<n;i++){ if(op>=a[i] && op <=b[i] && (op-a[i])%c[i]==0)cnt++; } if(cnt%2==0)printf("DC Qiang is unhappy.\n"); else printf("%d %d\n",op,cnt); } return 0;}
1 0
- hdu 4768 异或运算
- HDU 1287 破译密码 异或运算
- HDU 5416 异或运算性质 思维
- HDU.2095(异或运算)
- HDU 5344 MZL's xor(异或运算)
- hdu 5416 CRB and Tree(异或运算)
- HDU - 2095 find your present (2) 异或运算
- HDU 5536 Chip Factory——Trie + 异或运算
- hdu 5175 亦或运算和gcd
- 异或运算
- 异或运算符
- 异或运算
- C#异或运算
- 异或运算
- 异或运算
- 异或运算
- 异或运算应用
- smartoj2470异或运算
- TO THE MAX
- android.content.res.Resources$NotFoundExcept
- 《编写高质量代码:改善Java程序的151个建议》 建议3
- struts2常用对象
- 字符串中最长子串的问题
- hdu 4768 异或运算
- Cookie & Session
- Android开发:shape和selector和layer-list的(详细说明)
- Java程序员简历模板
- Linux 下的对拍程序..
- java.util.Date和java.sql.Date之间的类型转换,以及String和Date的转换
- pat 1007
- 学习Linux之二:Linux常用命令
- iOS运行时获取对象的成员变量和成员方法