hdu 1166
2015-07-07 22:11
218 查看
#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;
}
第一次自己写树状数组
#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;
}
第一次自己写树状数组
相关文章推荐
- there was no endpoint listening at net.pipe://localhost/PreviewProcessingService/ReportProcessing
- Java 程序流程控制和函数
- Java NIO vs. IO
- there was no endpoint listening at net.pipe://localhost/PreviewProcessingService/ReportProcessing
- there was no endpoint listening at net.pipe://localhost/PreviewProcessingService/ReportProcessing
- there was no endpoint listening at net.pipe://localhost/PreviewProcessingService/ReportProcessing
- final/finalize/finally的区别
- 构造方法、类方法、类的复合
- iOS 23 种设计模式
- 使用vector容器创建二维数组
- 配置远程连接mysql数据库 Connect to remote mysql database
- 求二叉树中节点的最大距离
- UI_UIScrollView/UIpageControl
- 7月7日随感
- OGG笔记(一)-基本操作
- 数据挖掘 k-means离群点检测
- 信号量、互斥体和自旋锁
- React Native专栏 说在前面
- XLD
- 红帽6使用xrdp远程界面登陆