hdu 1892

来源:互联网 发布:淘宝新款有送流量的吗 编辑:程序博客网 时间:2024/05/16 07:23

OJ

#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <set>#include <string>#include <cstring>#include <list>#include <queue>#include <stack>#include <cmath>using namespace std;#define PF(x) (scanf("%d",&x))#define PT(x,y) (scanf("%d%d",&x,&y))#define PR(x) (printf("%d\n",x))#define PRT(x,y)(printf("%d %d\n",x,y))#define M 330005#define N 1005int ar[N][N];int arr[N];int n;inline int maxx(int x,int y){return x>y?x:y;}inline int minx(int x,int y){return x>y?y:x;}int low(int x){return x&(-x);}void add(int x,int y,int c){int j = y;for(;x<N;x+=low(x)){for(j=y;j<N;j+=low(j))ar[x][j] += c;}}int sumt(int x,int y){int su = 0;int j = y;for(;x;x-=low(x)){for(j=y;j;j-=low(j))su += ar[x][j];}return su;}int getxy(int x,int y,int xx,int yy){return sumt(xx-1,yy-1)+sumt(x,y)-sumt(xx-1,y)-sumt(x,yy-1);}void init(){int test;PF(test);for(int i=1;i<=test;i++){printf("Case %d:\n",i);memset(ar,0,sizeof(ar));PF(n);for(int j=1;j<=N;j++)for(int k=1;k<=N;k++)add(j,k,1);int x,y,xx,yy,ax,ay,ix,iy;for(int j=1;j<=n;j++){char s[5];scanf("%s",s);if(s[0] == 'S'){PT(x,y);PT(xx,yy);x++,y++,xx++,yy++;ix = minx(x,xx);iy = minx(y,yy);ax = maxx(x,xx);ay = maxx(y,yy);PR(getxy(ax,ay,ix,iy));}else if(s[0] == 'A'){   int c;   PT(x,y);PF(c);x++,y++;   add(x,y,c);}else if(s[0] == 'D'){int c;PT(x,y);x++,y++;PF(c);int cc = getxy(x,y,x,y);if(c>cc)add(x,y,-cc);else add(x,y,-c);}else {int nn;PT(x,y);PT(xx,yy);PF(nn);x++,y++,xx++,yy++;int cc = getxy(x,y,x,y);if(nn>cc)add(x,y,-cc),add(xx,yy,cc);else add(x,y,-nn),add(xx,yy,nn);}}}return ;}int main(){init();return 0;}


原创粉丝点击