树状数组
Hanks_o
一名。
展开
-
bzoj1878: [SDOI2009]HH的项链(树状数组+离线处理)
题目传送门 真是毒瘤题。解法: 好恶心树状数组还有这个功能?! 区间种数也可以用树状数组维护?! 果断%一发题解。 看了半天发现: 用树状数组维护前缀和。 last[i]表示i这个位置的颜色上一个出现的位置是哪里。 那么我们在last[i]+1这个位置+1 在i+1这个位置-1。 那么我们在统计前缀和的时候每种颜色不论出现多少次贡献都为1。 每一段的答案等于求1~l的和。 为原创 2017-10-23 21:30:21 · 412 阅读 · 1 评论 -
bzoj3173: [Tjoi2013]最长上升子序列(树状数组)
题目传送门 。解法: 因为他是从小到大插。 那么新插入一个值对于前面插入的点的影响是没有的。。 所以树状数组直接求解答案。关键是插入的序列不知道啊。 感觉这题难在这。。 想了半天想了个O(n)求序列。 结果wa美滋滋。发现错误后重新想。 发现O(n)还求不了了。。一般位置都是满足二分性的。。 如果很多权值插在同一位置。 那么后面插入的位置是要在前面的。 所以从后往...原创 2018-04-22 16:38:12 · 547 阅读 · 0 评论 -
bzoj3289: Mato的文件管理(莫队+树状数组)
题目传送门 。解法: 刚才看到Gty的妹子序列。各种不会。。 看到这道题。。 不强制在线? 莫队啊。 进来的点树状数组求下逆序对就好了呀。以为复杂度很高会跑很慢谁知5s就过去了。。。代码实现:#include<cstdio>#include<cstring>#include<cstdlib>#include<iostr...原创 2018-04-22 16:31:57 · 234 阅读 · 0 评论 -
bzoj2743: [HEOI2012]采花(树状数组)
题目传送门 。解法: 想了蛮久。首先这道题肯定不能用前缀和相减什么的。 那么只能用区间1~l来表示答案。 因为1~r就没有了l的限制。记录每个点上一个出现的位置。 last[i]表示i上一个出现的位置。 能采到i这个位置上的花是从last[last[i]]+1这个位置开始的。 然后last[i]+1开始就采不了这朵花了。树状数组维护下代码实现:#inclu...原创 2018-04-12 08:42:07 · 251 阅读 · 0 评论 -
bzoj3110: [Zjoi2013]K大数查询(主席树+树状数组)
题目传送门 。解法: 据说有很多种写法。 我写的主席树套树状数组。 修改的话就差分一下就好啦。 位置l加上影响,位置r+1消除影响。用树状数组来求每个点有哪些数。 每个点的信息相当于求1~这个点的前缀和(差分) 那么我们怎么求区间呢。 相当于求前缀和的前缀和。 如果要求1到i的信息。 某个位置为j。 a[j]对与i的贡献就为a[j]*(i-j+1) 那么我们把i+1...原创 2018-04-11 10:41:40 · 286 阅读 · 0 评论 -
bzoj1146: [CTSC2008]网络管理Network(dfs序+主席树+树状数组)
题目传送门 第一次做树上带修主席树。。 肝吐血。解法: 第i棵主席树维护根到i的数。 查询的话就求个lca。 然后用x到根的信息加上y到根的信息-lca到根的信息-lca父亲到根的信息。 主席树维护即可。 lca随便用什么算法求都行。修改的话。 每棵主席树维护的是到根的信息。 那么修改一个点只对于整棵子树有影响。 对整棵子树有影响一般的套路不都是dfs序嘛。。 dfs...原创 2018-04-11 09:21:41 · 306 阅读 · 0 评论 -
bzoj1106: [POI2007]立方体大作战tet(树状数组)
题目传送门 。解法: 经典贪心策略啊。 如果两个点的位置之间有别的点对。 那么我们应该先消除别的点对。正确性显然嘛。代码实现:#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#in...原创 2018-03-20 21:33:01 · 302 阅读 · 0 评论 -
bzoj3155: Preprefix sum(树状数组)
题目传送门 。解法: 设每次问的位置为i。 那么每个j的贡献为a[j]*(i-j+1)首先a[j]*i是可以用树状数组维护出a[j]的前缀和然后最后乘i。 然后后面的可以看成-(j-1),然后维护a[j]*(j-1)的前缀和一减就行了。代码实现:#include<cstdio>#include<cstring>#include<cstd...原创 2018-03-05 13:44:59 · 262 阅读 · 0 评论 -
bzoj3192: [JLOI2013]删除物品(树状数组)
题目传送门 好题啊好思维。解法: 亮哥过来问我这道题。 然后我就开始做了。。 想着想着这个人就过来跟我说把他们并起来就好了。 然后换顶的时候就相当于把分界线移动一格而已。 然后不就树状数组维护就好了。哦还有就是本来三天前就A了可是没加longlong硬是WA。两个桶头对头。 拿样例来说: 1 4 5 2 7 3 头对头。那么就是541273. 然后分界线在1的后面2的前原创 2017-12-09 10:23:58 · 274 阅读 · 0 评论 -
bzoj4240: 有趣的家庭菜园(树状数组)
题目传送门 。解法: 原数组下标为1~n。 打乱后交换次数就为逆序对个数。 因为交换一次就会产生一个逆序对。。 要求逆序对个数尽量少。求的是一个山峰? 就是中间高两边递减的东西。 那么按高度排序。 看下插在左边还是右边产生的逆序对较少。 贪心嘛代码实现:#include<cstdio>#include<cstring>#includ...原创 2018-04-22 19:34:05 · 768 阅读 · 1 评论