您的位置:首页 > 其它

toj 3140

2011-09-08 21:04 225 查看
这个题简单模拟也能过,还是0ms!! 
//修改段,问点
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <fstream>
#define N 504
using namespace std;

int tree
,n;
int lowbit(int k)
{
return k&(-k);
}
void Modify(int num,int v)
{
while (num <= n)
{
tree[num] += v;
num += lowbit(num);
}
}
int sum(int num)
{
int ans = 0;
while (num > 0)
{
ans += tree[num];
num -= lowbit(num);
}
return ans;
}
int main()
{
int m,k,i,j,p,e,s;
while (scanf("%d%d",&n,&m)!=EOF)
{
memset(tree,0,sizeof(tree));
while (m--)
{
scanf("%d%d%d",&p,&s,&e);
if(p)
{
k = 0;
for(i = s;i <= e;i++)
{
k += sum(i)&1;
}
printf("%d\n",k);
}
else
{
Modify(s,1);
Modify(e+1,-1);
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tree