[CC-XXOR]Chef and Easy Problem
2018-09-13 09:46
399 查看
[CC-XXOR]Chef and Easy Problem
题目大意:
给你一个长度为\(n(n\le10^5)\)的序列\(A(A_i<2^{31})\)。\(m(m\le10^5)\)次询问,每次给定一个区间\([l,r]\),求使得\(\sum_{i=l}^r(A_i\oplus x)\)最大的\(x(x<2^{31})\)是多少。
思路:
按位考虑,如果这一位是\(1\)的数比较多那么就把\(x\)的这一位弄成\(0\),否则弄成\(1\)。
源代码:
#include<cstdio> #include<cctype> inline int getint() { register char ch; while(!isdigit(ch=getchar())); register int x=ch^'0'; while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); return x; } const int N=1e5+1,B=31; int a ; int sum [B]; int main() { const int n=getint(),q=getint(); for(register int i=1;i<=n;i++) { const int x=getint(); for(register int j=0;j<B;j++) { sum[i][j]=sum[i-1][j]; if((x>>j)&1) sum[i][j]++; } } for(register int i=0;i<q;i++) { const int l=getint(),r=getint(),len=r-l+1; int x=0; for(register int i=0;i<B;i++) { if((sum[r][i]-sum[l-1][i])*2<len) x|=1<<i; } printf("%d\n",x); } return 0; }
相关文章推荐
- CodeChef Chef and Churu Problem
- Chef and Prime Divisors Problem code: CHAPD (GCD问题)
- CF&&CC百套计划2 CodeChef December Challenge 2017 Chef And Easy Xor Queries
- [CC-FNCS]Chef and Churu
- [CC]Chef and Churu
- [CC-CHEFINV]Chef and Swaps
- [CC]Chef and Graph Queries
- [CC-CHANOQ]Chef and odd queries
- CC DEC.17 Chef And Easy Xor Queries 分块+懒标记
- Generate Java objects for FpML using JAXB and Maven: The Easy Way!
- [HDU 5572] An Easy Physics Problem (点在线上判定+对称)
- Codeforces Round #371 (Div. 2) E. Sonya and Problem Wihtout a Legend(技巧 + 离散化dp)
- Mock object and EasyMock framework
- An easy problem
- poj 2826 An Easy Problem?!
- The min/max problem in C++ and Windows
- NOJ 题目216:A problem is easy
- 指南 第三章例题2 UVA 11991 Easy Problem from Rujia Liu?(STL)
- Codeforces Round #371 (Div. 1) C. Sonya and Problem Wihtout a Legend
- LoadString(nID) Problem and Solution