|
|
题目 2000 [ZLXOI 2015][异次元圣战I]虐狗大赛
2016-07-14 09:50:46
|
|
那时太小不懂事,看见情侣就想烧......
|
|
单身狗之歌配上铃儿响叮当的调贼好听
|
|
#include<iostream>
#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; const int maxn=1010; int t,n,q; int c[maxn][maxn]={0}; int lowbit(int); int getsum(int ,int); int gengxin(int,int,int); char Getchar(); void Init(); int main() { scanf("%d",&t); for(int i=1;i<=t;i++) { Init(); } return 0; } void Init() { scanf("%d%d",&n,&q); for(int i=1;i<=q;i++) { char ch=Getchar(); if(ch=='C'){ int x1,x2,y1,y2; scanf("%d%d%d%d",&x1,&y1,&x2,&y2); gengxin(x1,y1,1); gengxin(x2+1,y2+1,1); gengxin(x2+1,y2,-1); gengxin(x2,y2+1,-1); } if(ch=='Q'){ int x1,y1; scanf("%d%d",&x1,&y1); int k=getsum(x1,y1); printf("%d\n",k%2); } } memset(c,0,sizeof(c)); } char Getchar() { char ch; while(ch=getchar(),ch!='C'&&ch!='Q'); return ch; } int lowbit(int x) { return x&-x; } int getsum(int x,int y) { int tot=0; for(int i=x;i>0;i-=lowbit(i)) for(int j=y;j>0;j-=lowbit(j)) tot+=c[i][j]; return tot; } int gengxin(int x,int y,int z) { for(int i=x;i<=n;i+=lowbit(i)) for(int j=y;j<=n;j+=lowbit(j)) c[i][j]+=z; } |
|
建了两个树状数组,一个记录第i只单身狗到目前被攻击的次数,一个记录第i只单身狗到目前受到的伤害吨数。
我们其实可以认为,第i只单身狗每被攻击一次就会回血d[i]。 所以,若一只单身狗被攻击了m次,伤害总吨数t,则现在它的h值即为“初始h”+m*d[i]-t |
|
差分果然快如闪电
题目 2000 [ZLXOI 2015][异次元圣战I]虐狗大赛
2015-10-30 21:03:15
|
|
你们这些提前交的是何居心!
题目 2000 [ZLXOI 2015][异次元圣战I]虐狗大赛
2015-10-29 11:53:09
|
|
黑的一匹
题目 2000 [ZLXOI 2015][异次元圣战I]虐狗大赛
2015-10-29 10:02:03
|
|
回复 @cstdio : 这题原本题目名称、题目解释全是“1”,我给改了一下,就是为了节省页面,让以后的题用这个新页面
题目 2000 [ZLXOI 2015][异次元圣战I]虐狗大赛
2015-07-22 22:24:52
|
|
稍有常识的人都会看出,如果我们的zlx继续前进……
题目 2000 [ZLXOI 2015][异次元圣战I]虐狗大赛
2015-07-22 08:06:10
|