| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:大牛看一下,怎么老是wrong answer呢?用了位运算,自己电脑上是可以。。。。。In Reply To:大牛看一下,怎么老是wrong answer呢?用了位运算,自己电脑上是可以。。。。。 Posted by:cer at 2009-04-11 14:24:54 > 要是把所用的变量都改成__int64 就tle ,真是晕死,怎么改进呢?可以讲一下树状数组吗?怎么实现?谢谢!!!
>
> #include <iostream>
> #include <cstring>
> using namespace std;
> unsigned __int64 a[15626],x;
>
> int main()
> {
> int test_case,r,inner_case,x1,x2,y1,y2,l,u;
> long start,end,lstart,uend,tmp;
> char op[2];
> scanf("%d",&test_case);
> while(test_case--){
> scanf("%d%d",&r,&inner_case);
> tmp=(r*r)>>6;
> memset(a,0,tmp+1);
> while(inner_case--){
> scanf("%s",op);
> if(op[0]=='C'){
> scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
> for(int i=x1;i<=x2;i++){
> x=0;
> x=~x;
> start=(i-1)*r+y1;
> end=(i-1)*r+y2;
> l=((start-1)>>6);
> u=((end-1)>>6);
> tmp=start&63;
> lstart=(tmp==0)?64:tmp;
> tmp=end&63;
> uend=(tmp==0)?64:tmp;
> if(l==u){
> x=(x<<(63-uend+lstart));
> x=(x>>(64-uend));
> a[l]=a[l]^x;
> }
> else{
> x=x<<(lstart-1);
> a[l]=a[l]^x;
> x=0;
> x=~x;
> x=x>>(64-uend);
> a[u]=a[u]^x;
> for(int j=l+1;j<=u-1;j++){
> a[j]=~a[j];
> }
> }
> }
> }
> else{
> scanf("%d%d",&x1,&y1);
> y2=(x1-1)*r+y1;
> l=(y2-1)>>6;
> tmp=y2&63;
> u=tmp==0?64:tmp;
> x=1;
> x=x<<(u-1);
> printf("%d\n",((a[l]&x)!=0));
> }
> }
> printf("\n");
> }
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator