HDU6085Rikka with Candies
来源:互联网 发布:java selenium教程 编辑:程序博客网 时间:2024/06/11 02:46
题目链接
题意
存在两个长度分别为
分析
由于只需要求出种数的奇偶性,容易发现奇偶性的变化和2进制中亦或的结果相同。于是想到利用位操作来进行优化。对于
代码
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;#define ULL unsigned long long#define MAXN 50050struct Bitset{ ULL bit[1600]; void reset(){ memset(bit,0,sizeof(bit)); } void flip(int pos){ bit[pos>>6]^=1llu<<(pos&63); } bool judge(int pos){ return bit[pos>>6]&(1llu<<(pos&63)); } void}A,ans;int b[MAXN];ULL prebit[66];int main(){ int T,n,m,q,a,mx; cin>>T; prebit[0]=1; for(int i=1;i<64;++i) prebit[i]=prebit[i-1]|(1ll<<i); while(T--){ scanf("%d %d %d",&n,&m,&q); A.reset(); ans.reset(); mx=0; for(int i=0;i<n;++i){ scanf("%d",&a); A.flip(a); mx=max(a,mx); } for(int i=0;i<m;++i){ scanf("%d",&b[i]); for(int j=0;j*b[i]<=mx;++j){ int len=j*b[i]; int idx1=len>>6,p1=len&63; len+=b[i]-1; int idx2=len>>6,p2=len&63; if(idx1==idx2){ ULL tmp=A.bit[idx1]>>p1; tmp&=prebit[p2-p1]; ans.bit[0]^=tmp; } else{ int curidx=0,curpos=0; ULL tmp=A.bit[idx1]>>p1; tmp&=prebit[63-p1]; ans.bit[0]^=tmp; curpos=63-p1; for(int k=idx1+1;k<idx2;++k){ if(curpos==63){ curidx++; ans.bit[curidx]^=A.bit[k]; } else{ tmp=A.bit[k]<<(curpos+1); ans.bit[curidx++]^=tmp; tmp=A.bit[k]>>p1; tmp&=prebit[curpos]; ans.bit[curidx]^=tmp; } } if(curpos==63){ curidx++; tmp=A.bit[idx2]&prebit[p2]; ans.bit[curidx]^=tmp; } else{ if(p2<p1){ tmp=A.bit[idx2]&prebit[p2]; tmp<<=curpos+1; ans.bit[curidx]^=tmp; } else{ tmp=A.bit[idx2]<<(curpos+1); ans.bit[curidx++]^=tmp; tmp=A.bit[idx2]>>p1; tmp&=prebit[p2-p1]; ans.bit[curidx]^=tmp; } } } } } while(q--){ int k; scanf("%d",&k); if(ans.judge(k)) printf("1\n"); else printf("0\n"); } }}
阅读全文
0 0
- HDU6085Rikka with Candies
- 2017多校联合第五场1001/hdu6085Rikka with Candies(bitset)
- hdu6085 Rikka with Candies
- HDU6085-Rikka with Candies
- Rikka with Candies
- Rikka with Candies HDU
- HDU 6085 Rikka with Candies
- HDU 6085 Rikka with Candies
- Rikka with Candies(bitset操作)
- HDU 6085 Rikka with Candies
- hdu 6085 Rikka with Candies
- hdu6085 Rikka with Candies [bitset+想法]
- Hdu 6085 Rikka with Candies【思维+Bitset】
- hdu 6085 Rikka with Candies bitset
- 【2017多校】HDU6085 Rikka with Candies
- HDU 6085 Rikka with Candies 模拟bitset
- Rikka with Candies(HDU6085) (bitset加速计数)
- HDU 6085 Rikka with Candies (bitset)
- 简单说 !![]==true 与 []==true 引发的思考
- 关于c语言中字符常量,变量的两道经典例题
- C库中的strcpy,strncpy,memcpy,memmove,memset函数
- 个推推送项目实用(二)
- Android 原生 Intent 分享支持的那些事
- HDU6085Rikka with Candies
- React项目开发中的数据管理
- 海信 M30T 最新官方冰川白(8+1)S21版本 极致流畅
- Spring三大核心思想之二:DI
- Spring 读取properties文件
- Junit单元测试应用
- 八大排序算法
- c函数---fgets,fgetc,gets,getchar,getc区别
- salesforce零基础学习(七十五)浅谈SOSL(Salesforce Object Search Language)