摘要: 这题为啥用树状数组呢?首先1<=N<=100,如果暴力修改的话,最糟糕的时间为O(N*N*N),然后有M个命令,1<=M<=10000,总耗时为O(M*N*N*N),也就是100*100*100*10000,而限时1s,神仙难救~如果把修改次数看成前缀和,修改次数为奇数,答案则为1,修改次数为偶数,则为0,总的耗时为Q(M*logN*logN*logN),随意可过~#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<al 阅读全文
posted @ 2013-05-22 21:29 小仪在努力~ 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 假设flag[i][j]=1表示灯亮,flag[i][j]=0表示灯灭只有两种情况需要更新树状数组:1、flag[x1][y1]=1,命令是D,add(x1,y1,1)2、flag[x1][y1]=0,命令是B,add(x1,y1,-1)由于树状数组的下标从1开始,而x1,y1有可能等于0,所以自增1#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<string>#include< 阅读全文
posted @ 2013-05-22 11:16 小仪在努力~ 阅读(228) 评论(0) 推荐(0) 编辑