【2017广西邀请赛】hdu 6186 CS Course
来源:互联网 发布:php采集器 代码 编辑:程序博客网 时间:2024/04/29 15:44
Problem 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 integersa1,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 exceptap .
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
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
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 integersa1,a2,⋯,an follows in a line, 0≤ai≤109 for each i in range[1,n].
After that there are q positive integersp1,p2,⋯,pq in q lines, 1≤pi≤n for each i in range[1,q].
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.
Then n non-negative integers
After that there are q positive integers
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 31 1 1123
Sample Output
1 1 01 1 01 1 0
求n个数,q个询问,求除了第p个数的&,|,^。
思路:
异或的话直接求出所有的数的异或,然后异或询问值。
与,或的话统计所有数每个位上的值。如果剩余数在当前位上的值大于0,则或值加上这个位的值。
如果剩余数早当前位上的值等于n-1,则与值加上这个位上的值。
//// main.cpp// 1005//// Created by zc on 2017/9/6.// Copyright © 2017年 zc. All rights reserved.//#include <iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define ll long longusing namespace std;const int N=110000;int n,q,b[N][40],c[40],p;ll a[N];int main(int argc, const char * argv[]) { while(~scanf("%d%d",&n,&q)) { ll ans3=0; memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); ans3^=a[i]; for(int j=0;j<33;j++) { if(a[i]&(1LL<<j)) b[i][j]=1; c[j]+=b[i][j]; } } for(int i=0;i<q;i++) { scanf("%d",&p); ll ans1=0,ans2=0; for(int j=0;j<33;j++) { if(c[j]-b[p][j]==n-1) ans1+=(1LL<<j); if(c[j]-b[p][j]>0) ans2+=(1LL<<j); } printf("%lld %lld %lld\n",ans1,ans2,ans3^a[p]); } }}
阅读全文
0 0
- HDU 6186 && 2017广西邀请赛:CS Course
- 【2017广西邀请赛】hdu 6186 CS Course
- 广西 2017 邀请赛 CS Course
- hdu 6186 CS Course 2017ACM/ICPC广西邀请赛-重现赛
- HDU-6186 CS Course (线段树)(2017ACM/ICPC广西邀请赛)
- 广西2017邀请赛 Problem E CS Course
- 广西2017邀请赛 E: CS Course &,|,^ 运算
- 2017广西邀请赛CS Course(&|^位运算模拟)
- HDU6186 | 2017广西邀请赛 CS Course (前缀和后缀)
- 2017广西邀请赛/hdu
- CS Course (广西2017邀请赛) 用线段树区间查询
- 2017广西邀请赛/hdu6186 CS Course (维护前缀和后缀)
- HDU 6186 CS Course
- HDU 6182 && 2017广西邀请赛:A Math Problem
- HDU 6188 && 2017广西邀请赛:Duizi and Shunzi
- HDU 6185 && 2017广西邀请赛:Covering(矩阵快速幂)
- HDU 6184 && 2017广西邀请赛:Counting Stars(三元环)
- HDU 6183 && 2017广西邀请赛:Color it(线段树)
- IntelliJ IDEA使用教程(很全)
- UeLogViewer的安装步骤
- git命令基础(一)
- (转)如何而去掉android中Button自带的阴影效果
- 文章标题 Asp.net中 Directory.Delete(path,ture)会导致Session["User"]==null
- 【2017广西邀请赛】hdu 6186 CS Course
- gflags命令行参数
- openwrt防火墙
- row_number () over(partition by order by) 在 impala 和 hive 中的对NULL排序的问题
- CentOS 7 配置Ruby语言开发环境
- thinkphp5引入sdk
- 【学习笔记】面试中的一些盲区
- gflags命令行参数
- 原创Couldn't read packet- Connection reset by peer 错误排查思路(推荐)