摘要: 暴力超时,这道题可以用线段树做,因为更新的是单个节点,我们也可以用数组数组来做,我将两种方法的代码都给出 数组数组最适宜的用途就是区间求和和点的更新,但树状数组并不适用于区间的更新问题,也不是做不到,比较麻烦且难理解,有兴趣的可以看看这个http://blog.csdn.net/xindoo/article/details/8748410//树状数组#includeint n,ans[50005],f[50005];int lowbit(int n){ return n&(-n);}void add(int i,int v){ while(i #include #define... 阅读全文
posted @ 2013-04-01 21:31 xindoo 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 本文扩写自郭神的《树状数组新应用》,在此表示膜拜。树状数组的学名貌似叫做BinaryIndexTree,关于它的基本应用可参考Topcoder上的这篇Tutorial.树状数组可以看作一个受限制的线段树,它维护一个数组,最经典的树状数组支持的基本操作有两个:(1)改变某一个元素的值(2)查询某一个区间内所有元素的和。在此基础上,经过简单的变形可以变成支持另一组操作:(1)把一个区间内所有元素都加上一个值(2)查询某一个元素的值。这两个都是已经泛滥了的东西了,在此不赘述。简单的树状数组模型是不支持这样一组操作的:(1)把某一个区间内所有元素都加上一个值(2)查询某一个区间内所有元素的和。当... 阅读全文
posted @ 2013-04-01 20:43 xindoo 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 传送门题目意思很简单,有N个数,Q个操作, Q l r 表示查询从l到r 的和,C l r v 表示将从l到r 的值加上v,明显的线段树,不知道线段树的人肯定暴力,肯定超时,哈哈!!解题方法我在代码注释中写的很详细了#include const int maxn = 100005; typedef __int64 ll; //Hint The sums may exceed the range of 32-bit integers.int a[maxn];struct node ... 阅读全文
posted @ 2013-04-01 20:07 xindoo 阅读(115) 评论(0) 推荐(0) 编辑