线段树
JW_7066
这个作者很懒,什么都没留下…
展开
-
HDU 1166 敌兵布阵(线段树)
单点更新 代码挺容易懂的,我就不多说了 查询的时候注意一点就可以了 #include #define maxn 50005 int ans; struct { int l, r, sum; int mid() { return (l + r)>>1; } }node[maxn*4]; void buildtree(int left, int right, int u)原创 2015-04-01 22:34:11 · 484 阅读 · 0 评论 -
POJ 2828 Buy Tickets(线段树)
题目来源:点击打开链接 用线段树记录总的空位置数,倒着将价值插入,倒着插一边就是最终的位置 #include #define maxn 200005 int p[maxn], v[maxn], sta[maxn]; struct { int l,r,s; }node[maxn*4]; void buildtree(int left, int right, int u) { node[u原创 2015-04-02 17:22:39 · 482 阅读 · 0 评论 -
HDU 1754 I Hate It(线段树入门题)
题目来源:点击打开链接 这是一题很基础的线段树,基本上套个模板就可以了 #include #include #include using namespace std; #define maxn 200005 int score[maxn]; struct { int l,r,max; }node[4*maxn]; void buildtree(int left, int right,原创 2015-03-31 21:44:27 · 472 阅读 · 0 评论 -
codeforces 339d(线段树)
题目链接 题意: 输入n,m 以及2^n个数字组成的数组 接下来是m行 每行输入p,b,将a[p]的值改成b,然后计算数值,计算规则如下: 第一次计算b1 = a[1] | a[2] , b2 = a[ 3 ] | a[ 4 ] , b3 = a[ 5 ] | a[ 6 ] , b4 = a[ 7 ] | a[ 8 ] 第二次计算c1 = b1^b2 , c2 = b3原创 2015-07-09 16:05:26 · 1097 阅读 · 0 评论 -
codeforces 629D-Babaei and Birthday Cake(dp && 线段树或树状数组离散优化)
题目链接:【codeforces 629D】 HDU1087的升级版 有n个圆柱形的蛋糕,已知每个蛋糕的半径r和高h,将这n个蛋糕叠起来,第i个蛋糕能放在第j个蛋糕的上面(1第j个蛋糕的体积,问最终叠成的蛋糕的最大体积 dp[i] = max(dp[j], 1 用线段树记录第i个蛋糕之前满足条件的的最大dp值 将从小到大排序后的体积的序号作为线段树的下标,没访问一次vol[i],就把原创 2016-02-22 12:34:55 · 563 阅读 · 0 评论 -
HDU 1556 Color the ball(线段树)
HDU 1556 http://http://acm.hdu.edu.cn/showproblem.php?pid=1556 这个题目还是不用线段树比较简单一点 一段被刷过一次,也就是说这一段都要+1 在开头部分加上1,末尾后一位-1,用数组记录 举个例子: 3 1 1 1 2 1 3 一开始数组s[ ] 清零 最终s[ 1 ] = 3 s[ 2 ] = 2原创 2015-08-02 22:12:55 · 684 阅读 · 1 评论 -
HDU - 1394【Minimum Inversion Number】 线段树求逆序数对
这是一个很老很经典的题了。。 题意: 已知一个长度为n的数列,该数列由数字0~n-1无重复组成,n 现有一种操作,将数列的第一个数移到最后一个去,最终最得到n个数列。 求这n个数列中,逆序数对的最小对数。 解题思路: 先依次将数列中的数字插入到线段数中,ans[i]表示0~i中比a[i]大的数的个数,求出第一个数列的逆序数对的个数。 每次将a[i]移到最后一位,都会使该数列的逆序数对原创 2017-11-16 22:05:00 · 375 阅读 · 0 评论