随笔分类 -  树状数组

摘要:园丁的烦恼 题解:如果 x 和 y 足够小的话, 我们就可以用2维树状数组去单点修改,区间查询去计算答案。但是现在 x 和 y 都足够大, 我们没办法去这样操作。 现在我们转换思路,按 x 为第一权重, y 为第二权重去排序, 这样我们就可以只用一颗树状数组去维护 x到当前为止y的数目。 然后对于查 阅读全文
posted @ 2018-10-05 16:51 Schenker 阅读(142) 评论(0) 推荐(0) 编辑
摘要:Putting Boxes Together 题意: 现在有n个物品,第i个物品他的位置在a[i],他的重量为w[i]。每一个物品移动一步的代价为他的w[i]。目前有2种操作: 1. x y 将第x的物品的重量改为y 2.l r 将编号在 [ l, r ]之间的所有物品移动到一起,求最小的花费是多少 阅读全文
posted @ 2018-09-28 14:37 Schenker 阅读(343) 评论(0) 推荐(0) 编辑
摘要:这个题目一个队友没读懂, 然后我读错了题目, 还让他堆了半天的公式写了半天的代码, 交上去一直0.0, 另一队友问题目有没有读错, 我坚持没有读错, 然后坑了2个小时的时间,不然应该会早一点做出来。 题意: 平面上有n个不重和的点, 现在定义一个集合是好的, 那么就需要满足, 这个集合里的每一个子集 阅读全文
posted @ 2018-08-03 14:41 Schenker 阅读(279) 评论(0) 推荐(0) 编辑
摘要:题意:一个n×m的农田, 每个小格子都有一种作物, 现在喷t次农药,每次农药覆盖一个矩形, 该矩形里面与农药类型不同的植物都会死掉, 求最后植物的死亡数是多少。 题解:二维树状数组。 每次喷农药的时候将这个覆盖的区间加一。 然后对于[1,n*m]的植物, 先删除同种植物的同种农药对区间的影响, 然后 阅读全文
posted @ 2018-07-21 17:03 Schenker 阅读(348) 评论(0) 推荐(0) 编辑
摘要:Another Version of Inversion 题意:只有2种走路方式,往右或者往下,求先走到一个大的数,在走到小的数的这种方式有多少。也就是说求出关于这个2维矩阵的逆序数。 题解:二维数组+逆序数就完事了。 代码: 1 #include<bits/stdc++.h> 2 using na 阅读全文
posted @ 2018-05-29 23:28 Schenker 阅读(289) 评论(0) 推荐(0) 编辑
摘要:Inna and Sequence 题意:先给你一个n,一个m, 然后接下来输入m个数,表示每次拳击会掉出数的位置,然后输入n个数,每次输入1或0在数列的末尾加上1或0,如果输入-1,相应m序列的数的位置就会掉出来并且后面的数会向前补位(每次删除操作可以看作是同时进行的,只有删除结束之后才会进行补位 阅读全文
posted @ 2018-02-06 21:43 Schenker 阅读(204) 评论(0) 推荐(0) 编辑
摘要:POJ-Matrix 题意:给你一个n*n矩阵的灯泡,灯泡的初始状态都为0,T次操作,分别是翻转操作:将x1,y1 x2, y2的灯泡状态反转 和 查询操作 找出x1, y1位置灯泡的状态。 题解:开一个2维树状数组进行更新操作。 假设我们现在需要翻转A区域内的灯泡, 我们就需要先将ABCD4个区域 阅读全文
posted @ 2018-02-02 15:53 Schenker 阅读(160) 评论(0) 推荐(0) 编辑
摘要:POJ - 3067 题意:有(1-n)个城市自上到下在左边, 另有(1-m)个城市自上到下在右边,共有m条高速公路,现求这m条直线的交点个数,交点不包括在城市处相交。 题解:先将高速公路读入,然后按照左边城市序号小的在前,左边序号相同的按照右边城市序号小的在前,然后根据右边的城市序号求逆序数就可以 阅读全文
posted @ 2018-02-02 14:47 Schenker 阅读(169) 评论(0) 推荐(0) 编辑
摘要:Letters Removing 题意:给你一个长度为n的字符串,然后进行m次删除操作,每次删除区间[l,r]内的某个字符,删除后并且将字符串往前补位,求删除完之后的字符串。 题解:先开80个set 将每个字符对应的下标存入空间, 然后每次删除了一个字符之后就将字符串的相应位置改成一个不会产生干扰的 阅读全文
posted @ 2018-02-01 11:14 Schenker 阅读(196) 评论(0) 推荐(0) 编辑
摘要:逆序对的定义:长度为n的数组a,求满足i<j时a[i]>a[j]条件的数对个数。 第一次接触这种问题的人可能是更先想到的是n^2去暴力数前面有几个比他大的数。 n^2算法就是数一下前面有多少个数比现在这个数大 这样全部跑完只后就是逆序数了。 其中重点是 前面有多少个数比现在这个数大 但是每次从1 f 阅读全文
posted @ 2018-01-30 21:24 Schenker 阅读(750) 评论(0) 推荐(1) 编辑