| ||||||||||
| 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 | |||||||||
2维树状数组居然TLE了。。。求解啊。# include <cstdio>
# include <cstdlib>
# include <cstring>
# include <iostream>
# include <algorithm>
# define MAXN 1007
using namespace std;
int tre[MAXN][MAXN];
int n_tre, n, m, tre_size;
inline int lowbit( int x )
{ return x&(-x); }
inline void Modify( int x, int y, const int& delta )
{
for( int i = x ; i <= n_tre; i += lowbit(i))
for( int j = y ; j <= n_tre; j += lowbit(j))
tre[i][j] += delta;
}
inline int get_sum( int x, int y )
{
int sum = 0;
for( int i = x ; i != 0; i -= lowbit(x))
for( int j = y ; j != 0; j -= lowbit(y))
sum += tre[i][j];
return sum;
}
int Init()
{
memset( tre, 0, tre_size);
scanf( "%d%d", &n, &m);
return 0;
}
int Work()
{
n_tre = n;
int i, j, x1, y1, x2, y2;
char Q;
while( m-- )
{
cin >> Q;
if( Q == 'C' )
{
scanf( "%d%d%d%d", &x1, &y1, &x2, &y2);
Modify( x1, y1, 1);
Modify( x2 + 1, y2 + 1, 1);
Modify( x1, y2 + 1, 1);
Modify( x2 + 1, y1, 1);
}
else
{
scanf( "%d%d", &x1, &y1);
printf( "%d\n", get_sum( x1, y1) & 1);
}
}
return 0;
}
int main()
{
int tt;
scanf( "%d", &tt);
tre_size = sizeof( tre );
while( tt-- )
{
Init();
Work();
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator