上一页 1 2 3 4 5 6 ··· 11 下一页
摘要: 一道模版题(就是这个算法有点偏……) 这道题就是在一个有向图中,求出一个定根的有根树,使其边权之和最小,其实就是有向图的最小生成树。 其实挺简单的……没我想象的那么高深。就是在改边权的地方有点不好理解,正确性可以用数学归纳法证明。 一次次缩点直到这个图不再有环为止。 代码: 补充: 有几个地方很重要 阅读全文
posted @ 2019-05-30 23:47 paopo 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 这道题我感觉评成紫题并不夸张,这比某些紫题思维含量高多了……反正我好久才想明白怎么做…… 其实,这道题就是求这个式子所有的 “ max{ Vi ; Vj } × | Xi − Xj | ” 之和。由于n的范围20000,显然 n2是过不了的。(但是洛谷数据问题,n2能过,我也是醉了……) 那我们分析 阅读全文
posted @ 2019-05-28 23:26 paopo 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 我一开始想的是O(n2)的做法,就是暴力dp。 考虑对于一个位置 i ,如果说存在(1 <= j < i ),使得sum[ i ] >= sum [ j ] ,那么 j 到 i 就可以分为一组,i 的方案数就加上 j 的方案数。这是O(n2)的,对于100000这样的数据显然过不了。 考虑优化: 我 阅读全文
posted @ 2019-05-25 21:49 paopo 阅读(298) 评论(0) 推荐(1) 编辑
摘要: 带权并查集——今天写真有些新的体会。 我画了个图: 比如说,我们现在要将x移动到y上,我们维护 fa [ x ] 表示这一堆最下面的那个,那么我们先这样: 之后再要求比如说 o 的深度的时候,我们: find的代码如下: 也就是说,每一次我都加上路径压缩前的 fa [ x ] 的深度,再路径压缩。 阅读全文
posted @ 2019-05-21 20:20 paopo 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 感觉这是一道挺好的dp。 拿到题第一眼,就看出来是一个01背包(显然每一个只能选择取或者不取),那么只要一个做体积,一个做价值,跑完取所有v>0状态中v + f [ v ] 的最大值就可以了。但是,与普通的01背包有一点不同。 第一,这道题的容积有负的,这导致了dp转移方向的变化。想想平时为什么01 阅读全文
posted @ 2019-05-20 22:18 paopo 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题意大概就是:给出n个字符串,有m个询问:每次给出字符串s,整数k,问在所有以s为前缀的字符串中,字典序第k大的,是那n个串中的第几个。 我一开始做的时候忽略了一个问题:就是对于两个串a,b,你直接输出 a > b 是有值的。也就是说,字符串是可以直接比较的,我们能O(1)两个串比较大小(因为就是a 阅读全文
posted @ 2019-05-18 20:38 paopo 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 一道不错的背包题。 首先,只考虑这个单点,我们一定是希望用最少的牛的组合来完成这个点的音量。因为有用的信息只是音量,而对于这个音量是怎么组合出来的,其实是无所谓的。所以,我们要每一个单点提供的音量的所有组合中,用最少牛数那一组,再西格玛。 那么考虑这个点提供的音量是多少——如果说上一个点音量是这个点 阅读全文
posted @ 2019-05-16 20:36 paopo 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 贪心区间选点问题。 对于两个牛不能出现在同一个photo中,可以看作对于这一段区间,必须要一个断点给这个区间的端点分开。 那么对于若干条这样的线段,问题就转化成了:最少需要多少断点,可以将所有线段都分开,即每个区间线段上都有一个断点。 这就可以贪心求解了,先排序再从左往右扫,定义last为当前处理的 阅读全文
posted @ 2019-05-13 23:21 paopo 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 主要思想就是二分答案,关键在于如何判断二分的平均值是否可行。 在这里之间利用洛谷题解推导过程@communist,因为我没找到这些符号怎么打…… ans就是二分的平均值,那么假设存在更好的或者等于的,满足第一个式子,即可得到最后一个。 那么只要每一次线性求出每个点对应的最小前缀,最小后缀,判断是否有 阅读全文
posted @ 2019-05-12 22:21 paopo 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 一开始以为是离散化线段树,交了两次发现做不了,因为对于一个离散化后线段树上的点,其单点权值>=2,并不能知道应该取这个点和左边的点构成的线段,还是这个点和右边的点构成的线段。 其实正解很简单,就是个前缀和…… 对于左端点为1,右端点为-1。排序之后,从左到右前缀和。这样如果现在的前缀和>1,说明至少 阅读全文
posted @ 2019-05-12 17:25 paopo 阅读(112) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 11 下一页