KeyboardPianist的博客

有一天,我会足够强大,足够勇敢。

hdu 1166

#include <stdio.h>
#include <string.h>
#define maxn 500005
int p[maxn], c[maxn], n;
char ask[15];
int lowbit(int x)
{
	return x & (-x);
}

void update(int x, int num)
{
	while(x <= n)
	{
		c[x] += num;
		x += lowbit(x);
	}
}

int getSum(int x)
{
	int s = 0;
	while(x > 0)
	{
		s += c[x];
		x -= lowbit(x);
	}
	return s;
}
int main()
{
	int t, i, k, x, y;
	scanf("%d", &t);
	k = 1;
	while(t--)
	{
		printf("Case %d:\n", k++);
		scanf("%d", &n);
		memset(c, 0, sizeof(c));
		for(i = 1;i <= n;i++)
		{
			scanf("%d", &p[i]);
			update(i, p[i]);
		}
		
		while(1)
		{
			scanf("%s", ask);
			if(!strcmp(ask, "Add"))
			{
				scanf("%d %d", &x, &y);
				update(x, y);
			}
			else if(!strcmp(ask, "Sub"))
			{
				scanf("%d %d", &x, &y);
				update(x, -y);
			}
			else if(!strcmp(ask, "Query"))
			{
				scanf("%d %d", &x, &y);
				printf("%d\n", getSum(y) - getSum(x - 1));
			}
			else if(!strcmp(ask, "End")) break;
		}
	}
	return 0;
}
 

第一次自己写树状数组


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/KeyboardMagician/article/details/46794983
个人分类: HDU
想对作者说点什么? 我来说一句

hdu acm1166线段树

2014年05月03日 2KB 下载

hdu 1166线段树

2013年07月02日 2KB 下载

没有更多推荐了,返回首页

不良信息举报

hdu 1166

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭