hdu6186-思维&前缀和&后缀和-CS Course
来源:互联网 发布:mac 删除文件 命令 编辑:程序博客网 时间:2024/05/16 06:32
http://acm.hdu.edu.cn/showproblem.php?pid=6186
给定你一组数,
在给你q个查询,
每个查询问你 除了当前的数,其他数组中所有数的 与 或 异或 值
异或是有反操作的。
对于 &和| , 我是通过维护一个前缀和后缀。
比方说,在计算a_i 的时候,输出 1-a_i-1 和a_(i+1)-a_n的与 和或
前缀和可以输入的时候维护,后缀和再扫一遍。
#include <bits/stdc++.h>using namespace std;int a[100050],ans1[100050],ans2[100050],ans3[100050];struct Node{ int x,y;}node[100050],node2[100050];int main(){ int n,p,x; while(scanf("%d%d",&n,&p)!=-1) { scanf("%d",&a[1]); node[0].x=0xffffffff; node[n+1].y=0xffffffff; // cout<<node[0].x<<endl; node2[0].x=0; node2[n+1].y=0; node[1].x=a[1];int c=a[1],d=a[1]; //node[1].y=a[1]; node2[1].x=a[1]; for(int i=2;i<=n;i++) { scanf("%d",&a[i]); node[i].x=a[i]&node[i-1].x; node2[i].x=a[i]|node2[i-1].x; c=c|a[i]; d=d^a[i]; } node[n].y=a[n]; node2[n].y=a[n]; for(int i=n-1;i>=1;i--){ node[i].y=node[i+1].y&a[i]; node2[i].y=node2[i+1].y|a[i];} //for(int i=0;i<=n;i++){ // cout<<node[i].x<<" "<<node[i].y<<endl; // } for(int i=0;i<p;i++) { scanf("%d",&x); ans1[i]=node[x-1].x&node[x+1].y; //cout<<node[x-1].x<<" "<<node[x+1].y<<endl; ans2[i]=node2[x-1].x|node2[x+1].y; ans3[i]=d^a[x]; } for(int i=0;i<p;i++) printf("%d %d %d\n",ans1[i],ans2[i],ans3[i]); } return 0;}
阅读全文
0 0
- hdu6186-思维&前缀和&后缀和-CS Course
- HDU6186 | 2017广西邀请赛 CS Course (前缀和后缀)
- 2017广西邀请赛/hdu6186 CS Course (维护前缀和后缀)
- HDU6186-CS Course
- hdu 6186 CS Course (前缀+后缀)
- hdu 6186 CS Course 前缀后缀问题
- HDU6186CS Course前缀和
- 【位运算知识+前缀思路+后缀思路】CS Course HDU
- 前缀和后缀和
- Codeforces 651D Image Preview【思维+二分+前缀后缀和】
- 前缀++和后缀++
- 前缀和后缀表达式
- 前缀、中缀和后缀
- 前缀++和后缀++
- CAVLC中的前缀和后缀
- CAVLC中的前缀和后缀
- C++数字前缀和后缀
- CAVLC中的前缀和后缀
- Eclipse导入项目报错Tomcat X.X not define,修改了build path还是报错
- 第二周——程序的多文件组织
- pip---python自带的安装工具
- bzoj1452: [JSOI2009]Count(二维树状数组)
- python3.5下如何安装numpy和scipy?
- hdu6186-思维&前缀和&后缀和-CS Course
- Knockout Tournament
- jmeter连接mysql
- MINGW-W64-I686-TOOLCHAIN
- JS连等赋值的坑
- 17ACM Asia Shenyang 1008 transaction
- 简单结合源码和案例去理解动态代理
- STL之next_permutation函数对各种类型的全排列实例
- Thread 源码分析