ICPC2017南宁邀请赛1005&&HDU6197 (模拟
2017-09-19 14:26
176 查看
CS Course
Description
Little A has come to college and majored in Computer and Science.Today he has learned bit-operations in Algorithm Lessons, and he got a problem as homework.
Here is the problem:
You are giving n non-negative integers a1,a2,⋯,an, and some queries.
A query only contains a positive integer p, which means you
are asked to answer the result of bit-operations (and, or, xor) of all the integers except ap.
Input
There are no more than 15 test cases.Each test case begins with two positive integers n and p
in a line, indicate the number of positive integers and the number of queries.
2≤n,q≤105
Then n non-negative integers a1,a2,⋯,an follows in a line, 0≤ai≤109 for each i in range[1,n].
After that there are q positive integers p1,p2,⋯,pqin q lines, 1≤pi≤n for each i in range[1,q].
Output
For each query p, output three non-negative integers indicates the result of bit-operations(and, or, xor) of all non-negative integers except ap in a line.Sample Input
3 3 1 1 1 1 2 3
Sample Output
1 1 0 1 1 0 1 1 0
题意
给一组数 再给一个数求除了这个数的所有数的&,|,^,因为是静态的查询, 直接统计前缀后缀就ok
AC代码
#include <bits/stdc++.h> using namespace std; #define LL long long #define CLR(a,b) memset(a,(b),sizeof(a)) const int MAXM = 1e3+10; const int MAXN = 1e6+10; int arr[MAXN]; int sa[MAXN], sb[MAXN], sc[MAXN]; int ea[MAXN], eb[MAXN], ec[MAXN]; int main() { int n, q; while(~scanf("%d%d",&n,&q)) { for(int i = 1; i <= n; i++) { scanf("%d",&arr[i]); } sa[1] = sb[1] = sc[1] = arr[1]; ea = eb = ec = arr ; for(int i = 2; i <= n; i++) { sa[i] = sa[i-1]&arr[i]; sb[i] = sb[i-1]|arr[i]; sc[i] = sc[i-1]^arr[i]; } for(int i = n-1; i >= 1; i--) { ea[i] = ea[i+1]&arr[i]; eb[i] = eb[i+1]|arr[i]; ec[i] = ec[i+1]^arr[i]; } int x; while(q--) { scanf("%d",&x); if(x == 1) { printf("%d %d %d\n",ea[x+1],eb[x+1],ec[x+1]); } else if(x == n) { printf("%d %d %d\n",sa[x-1],sb[x-1],sc[x-1]); } else { printf("%d %d %d\n",sa[x-1]&ea[x+1],sb[x-1]|eb[x+1],sc[x-1]^ec[x+1]); } } } return 0; }
相关文章推荐
- ICPC2017南宁邀请赛1001&&HDU6182(水
- ICPC2017南宁邀请赛1005&&HDU6185 (矩阵快速幂/黑科技
- ICPC2017南宁邀请赛1004&&HDU6197 (贪心
- 2017广西邀请赛CS Course(&|^位运算模拟)
- HDU 1361 & POJ 1068 Parencodings(模拟)
- 【NOIP模拟】20140809 题解 & 总结
- UVA10205 - Stack 'em Up(模拟)
- VC++ 模拟"CLICK事件"关闭指定窗口
- 【CodeForces】223A - Bracket Sequence(栈 & 模拟)
- 【数据结构•hash表】OIBH模拟…
- 2013 ACM-ICPC吉林通化全国邀请赛 && HDU 4496 D-City (并查集)
- DFS&模拟—POJ3009-Curling 2.0 if的用法区别
- 模拟->YY POJ 2612 Mine Sweeper
- hdu 5237 2015上海邀请赛 B - Base64 (进制转化,模拟)
- 多校7 HDU-6130 Kolakoski 构造数列 & 模拟
- 蓝桥杯 兰顿蚂蚁(dfs&&模拟)
- 我的Android进阶之旅------>Android中通过adb shell input来模拟滑动、按键、点击事件
- 2017广西南宁邀请赛总结
- HDU 6184&& 2017广西邀请赛 Counting Stars(三元环计数)
- 11.1机房小测-模拟·BFS·DP&容斥