2016icpc沈阳站网络赛 1001&hdu5892 Resident Evil
Posted DarkTong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016icpc沈阳站网络赛 1001&hdu5892 Resident Evil相关的知识,希望对你有一定的参考价值。
题意:区间异或。
分析:用一个long long 存下50种怪物的情况,然后跑一下二维树状数组。
坑:行末有空格。
吐槽:反正我被自己坑了。
/************************************************ Author :DarkTong Created Time :2016/9/18 21:49:37 File Name :hdu_5892.cpp *************************************************/ #include <bits/stdc++.h> using namespace std; typedef unsigned long long ULL; typedef long long LL; const int INF = 0x3f3f3f3f; const double eps = 1e-9; const int maxn = 3005; LL a[maxn][maxn], b[maxn][maxn], c[maxn][maxn], d[maxn][maxn]; int n, m; inline int lowbit(int &x){ return x&-x;} inline void gp(LL e[][maxn], int x, int y, int z) { LL t = (1LL<<z); for(int i=x;i<=n;i+=lowbit(i)) for(int j=y;j<=n;j+=lowbit(j)) e[i][j] ^= t; } //[1-x][1-y] void Update(int x, int y, int z) { gp(a, x, y, z); if(x&1) gp(b, x, y, z); if(y&1) gp(c, x, y, z); if(x&y&1) gp(d, x, y, z); } void Update_T(int x1, int y1, int x2, int y2, int z) { Update(x1, y1, z); Update(x2+1, y1, z); Update(x1, y2+1, z); Update(x2+1, y2+1, z); } inline LL gs(LL e[][maxn], int x, int y) { LL ans = 0; for(int i=x;i>0;i-=lowbit(i)) for(int j=y;j>0;j-=lowbit(j)) ans ^= e[i][j]; return ans; } LL Query(int x, int y) { LL ans = 0; ans ^= (((x+1)&(y+1)&1) ? gs(a, x, y) : 0); ans ^= (((y+1)&1) ? gs(b, x, y) : 0); ans ^= (((x+1)&1) ? gs(c, x, y) : 0); ans ^= gs(d, x, y); return ans; } LL Query_T(int x1, int y1, int x2, int y2) //返回值写错了,查了好久 { LL ans = 0; ans ^= Query(x2, y2); ans ^= Query(x1-1, y2); ans ^= Query(x2, y1-1); ans ^= Query(x1-1, y1-1); return ans; } int main() { int T, cas=1; scanf("%d%d", &n, &m); char op[5]; int x1, x2, y1, y2, k, a, b; while(m--) { scanf("%s%d%d%d%d", op, &x1, &y1, &x2, &y2); if(op[0]==‘P‘) { scanf("%d", &k); while(k--) { scanf("%d%d", &a, &b); if(b&1) Update_T(x1, y1, x2, y2, a-1); } } else { LL ans = Query_T(x1, y1, x2, y2); for(int i=0;i<50;++i) printf("%d ", ((ans>>i)&1LL) ? 2 : 1); puts(""); } } return 0; }
以上是关于2016icpc沈阳站网络赛 1001&hdu5892 Resident Evil的主要内容,如果未能解决你的问题,请参考以下文章
[ACM-ICPC 2018 沈阳网络赛] G. Spare Tire (思维+容斥)
HDU 5901 Count primes (1e11内的素数个数) -2016 ICPC沈阳赛区网络赛
HDU 5894 hannnnah_j’s Biological Test (组合数学) -2016 ICPC沈阳赛区网络赛