摘要: #include #include #include #include using namespace std; int sum1[1000]; int sum2[1000]; int a[1000]; int n,m; int lowbit(int x){ return x&(-x); } void update(int x,int w){//更新效果:把x位置后面所有的数的值+w ... 阅读全文
posted @ 2019-02-22 23:17 bluefly-hrbust 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 非常简单的单点修改+区间加+区间查询。我用的是最近刚学的区间修改版本树状数组。 直接维护即可,注意修改后的单点值已经不是a[i],或者b[i],要通过区间查询求单点。不然是错的。 区间修改版本树状数组: 线段树版本:。。。更新laze标记,以及sum的时候,一定要用+=,不要用=,因为往下更新的时候 阅读全文
posted @ 2019-02-22 23:10 bluefly-hrbust 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 其实我最开始没有这道题。。。是做到UPC-11079-小P的决斗,训练结束后然后搜索了一波,才了解这个题的。 非常牛逼的题。。。这么多人做出来了。。。我好菜。。。 对于每对三元组Ta=(La,Ja,Ka),Tb=(Lb,Jb,Kb),定义Ta,Tb之间的差值D为D(Ta,Tb)=max(La−Lb, 阅读全文
posted @ 2019-02-22 23:02 bluefly-hrbust 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 树状数组进阶: 区间修改与区间查询 今天老糊涂了,树状数组忘记了,基本的只要单点修改+区间查询功能,如果要进行区间加操作,需要把树状数组进行改造。 我们首先来回顾树状数组的功能: lowbit(x&(-x)):返回二进制最低位1的值:比如x=1010那么lowbit值为2。 x+lowbit(x): 阅读全文
posted @ 2019-02-22 10:26 bluefly-hrbust 阅读(4783) 评论(1) 推荐(2) 编辑