
树状数组
文章平均质量分 55
mis_deer
Make_myself.
展开
-
[POJ 2155] Matrix (高维树状数组)
POJ - 2155 给定一个矩阵,开始时其元素全为 0,有两个操作 C x1 y1 x2 y2 将左上角为 (x1,y1),右下角为 (x2,y2)的子矩阵里的元素取反 Q x y 询问(x,y)元素的值裸的二维树状数组,知道了套路以后还是很好做的 add2(x1,y1,1);add2(x1,y2+1,-1); add2(x2+1,y1,-1);add2(x2+1,y2+1,1) 根据原创 2016-04-27 21:31:12 · 461 阅读 · 0 评论 -
[POJ 2886] Who Gets the Most Candies? (Joseph环问题 + 树状数组)
POJ - 2886 有 N个人顺时针围成一圈,刚开始第 K个人退出圈,他手上有个数字 A_k 如果 A_k为正,则他左数 A_k个人退出,如果 A_k为负,则他右数 A_k个人退出 同样,接下来退出的那个人手上也有个数字,一直进行下去直到圈内所有人都离开 第 p个人退出的时候,他能得到 F(p)个糖果,F(p) 为 p约数的个数 问得到最多糖果的最早退出的人是谁,他得到原创 2016-04-30 22:11:20 · 343 阅读 · 0 评论 -
[POJ 1990] MooFest (树状数组)
POJ - 1990 有NN头牛排成一行,每两头牛之间进行交谈 代价为 max(v[i],v[j])∗distance(i,j)max(v[i], v[j])*distance(i,j),问代价和为多少很显然,如果暴力去做的话,是 O(n2)O(n^2)的,必然会 T 所以我们要依照vv的值来依次计算 即对vv的值从小到大进行排序,然后对vv从小到大计算 计算到排序后第ii头牛时,前面的牛原创 2016-04-21 22:51:10 · 299 阅读 · 0 评论 -
[CodeForces 677D] Vanya and Treasure (二维树状数组+静态前缀最小值)
CodeForces - 677D 一个N*M的网格图,每个格子有一把钥匙,上面一个权值 要求从 1到 P按顺序收集钥匙,保证 P只有一把 问收集全部钥匙的最短距离是多少首先 dp[x][y]表示收集 (x,y)的最小距离 然后这题不能暴力,复杂度是 O(N^4) 官方题解的 bfs复杂度没看懂,所以退而求其次, 实现了一下comment的二维树状数组树状数组维护二维静态前缀原创 2016-06-04 01:10:43 · 756 阅读 · 0 评论 -
[HDU 5372] Segment Game (树状数组)
HDU - 5372 给定若干条长度为 1、2、3…递增的线段 每次向数轴上添加一条线段,或者删除一条线段 问每次添加的线段能完全覆盖多少条已有线段这题卡CDQ分治,而CDQ分治没有用到长度递增这个条件 之前的线段与正在添加的线段的位置情况只有三种 之前的线段 [l0,r0][l_0, r_0], 当前线段 [l,r][l,r] 1. l0<ll_0<l,则必有 r0<rr_原创 2016-07-11 14:24:46 · 315 阅读 · 0 评论 -
[HDU 5406] CRB and Apple (双线程DP+树状数组)
HDU - 5406 一棵树上有若干个苹果,每个苹果有一个高度值和美味值 两个人一棵树上从高到底摘苹果,摘到苹果后,可以选择给任意一个人吃,或者扔掉 但是每个人吃的苹果的美味值必须是非严格递增的 问两个人最多可以吃多少个苹果首先按高度先排序,问题就转化为求两个 LIS,使得他们的长度和最大费用流有一个费用流做法,从前向后 D小的向 D大连一条流量为 1的边 每条边费用为 1原创 2016-07-18 19:55:21 · 447 阅读 · 0 评论 -
[SPOJ 3267] D-query (离线询问+树状数组)
SPOJ - 3267 给定一个序列,询问区间内有多少个不同的数刚开始题目读错了,以为求的是区间内有多少个不重复出现的数 导致我想了半天不懂别人怎么树状数组离线的实际上只要保证区间内每个数只被统计过一次就好了 先将询问离线,对区间右端点排序 然后用权值树状数组来标记一下,在每个数出现的位置加上一个 1 相同数尽量地将权值放到最右边的那个数上,然后删去前一个位置的权值#pragma co原创 2016-08-06 13:39:57 · 430 阅读 · 0 评论 -
[CSU - 1811 (湖南省赛16)] Tree Intersection (dfs序维护子树+离线询问+树状数组)
CSU - 1811 (湖南省赛16) 给定一棵树,每个节点都有一个颜色 问割掉任意一条边,生成的两个子树中颜色集合的交集大小这个是 dfs序处理子树 + 离线询问 + bit维护 的解法 首先问题转化为求解一个子树中有多少种颜色以及独有颜色的数量 用总的颜色数量减去独有颜色数量即为这棵子树的答案 先做一遍 dfs,再按 dfs序重新组建颜色序列 这样对子树的询问,就变成了对序列原创 2016-09-09 13:22:32 · 552 阅读 · 0 评论 -
[Codeforces 484D] Kindergarten (DP + 树状数组优化)
Codeforces - 484D 给定一个长度为 N 的数列,可以将连续的一段分成一组 每组的价值为组内最大值减最小值,数列的价值为所有组的价值和 问整个数列的价值的最大值很容易想到一个 (N2)\mathcal{O}(N^2)的 暴力DP 然后有一个性质,就是每组的最大值最小值一定在边界上 容易证明,如果最值不再边界上,可以向内缩小这个组 把剩余的值让出来给其他组,结果原创 2017-01-21 16:39:45 · 283 阅读 · 0 评论