AcWing 242 一个简单整数问题(区间修改 单点查询)
2021-03-17 08:24
标签:oid 思想 printf for cin ble == scanf 前缀 原题 ① 区间修改 ② 单点查询 AC代码: 做了这题,发现自己代码能力好差,找bug找了好久。 AcWing 242 一个简单整数问题(区间修改 单点查询) 标签:oid 思想 printf for cin ble == scanf 前缀 原文地址:https://www.cnblogs.com/Pecoz/p/12397315.html
该题涉及树状数组又一串操作:
运用差分的思想,我们新建了一个数组b,初始化为零,对于每个指令"C l r d",我们只需将其转化为以下操作:
1.把b[l]加上d
2.再把b[r+1]减去dinline void add(int x,int y)
{
for(;x
add(l,j);
add(r+1,-j);
执行了以上操作后,b数组的前缀和b[1~x]就代表了该指令对a[x]的影响,而在查询指令"Q x"中,我们只需查询前缀和b[1~x],最后再加上a[x]即可inline int ask(int x)
{
int ans=a[x];
for(;x;x-=x&-x)
{
ans+=c[x];
}
return ans;
}
#include
这题用了内联函数,发现也没快多少2333
文章标题:AcWing 242 一个简单整数问题(区间修改 单点查询)
文章链接:http://soscw.com/index.php/essay/65221.html