HDU 2642 Stars

-_-!为啥这么多题目的名字都叫

Stars

呢...寒一个~

N很大~点坐标很小~

该题很明显是二维树状树组,不过有一点比较麻烦的就是可能对于同一个点多次插入,开个bool判断即可~~~

还有要注意坐标是0<=x,y<=1000,so别上当,记的处理点的时候x,y坐标要做相应的变化~

查询的时候我是使用区间的加加减减,效率MS还可以提高的说

 

 

 

下面是主要的思路代码:

 

 

int main()
{

int
T,x,y,x1,y1,ans;
char
op;
//OPEN
scanf("%d%*c",&T);
while
(T--)
{

scanf("%c",&op);
if
(op=='D')
{

scanf("%d%d",&x,&y);
x++;
y++;
if
(!mat[x][y]){getchar();continue;}
insp(x,y,-1);
mat[x][y]=false;
}

else if
(op=='B')
{

scanf("%d%d",&x,&y);
x++;
y++;
if
(mat[x][y]){getchar();continue;}
insp(x,y,1);
mat[x][y]=true;
}

else

{

scanf("%d%d%d%d",&x,&x1,&y,&y1);
ans=0;
if
(x>x1)swap(x,x1);
if
(y>y1)swap(y,y1);
x1++;
y1++;
ans+=Q(x1,y1);
ans-=Q(x,y1);
ans-=Q(x1,y);
ans+=Q(x,y);
printf("%d/n",ans);
}

getchar();
}

return
0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值