随笔分类 - 

1
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1095 [算法] 首先建出点分树,然后每一个点开两个堆。“第一个堆记录子树中所有节点到父亲节点的距离 ,第二个堆记录所有子节点的堆顶 ,那么一个节点的堆2中的最大和次大加起来就是子树中经 阅读全文
posted @ 2019-03-15 23:08 evenbao 阅读(238) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2111 [算法] 一种比较好的理解方式是将该序列看成是一棵堆式存储的二叉树 那么问题转化为求有多少个堆 考虑dp , 用fi表示以i为根的子树能构成多少个堆 根结点显然是最小的数 , 我 阅读全文
posted @ 2019-03-02 08:43 evenbao 阅读(177) 评论(0) 推荐(1)
摘要:[题目链接] https://codeforces.com/problemset/problem/140/C [算法] 显然 , 我们每次应优先考虑数量多的雪球 将雪球个数加入堆中 , 每次取出数量前三大的雪球 , 贪心地将它们分到一个组中即可 时间复杂度 : O(N log N) [代码] 阅读全文
posted @ 2018-09-27 19:10 evenbao 阅读(263) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5289 [算法] 题目中的限制条件可看作是 : 第i个数必须排在所有权值为i的数前面 那么 , 我们枚举每一个数 , 向所有权值为当前枚举的数的下标的数连边 , 不难发现 , 若无解 , 阅读全文
posted @ 2018-08-28 17:03 evenbao 阅读(255) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5102 [算法] 首先,n条线段的交集一定是[Lmax,Rmin] , 其中,Lmax为最靠右的左端点,Rmin为最靠左的右端点 根据这个性质 , 我们不妨将所有线段按左端点为关键字排序 阅读全文
posted @ 2018-08-26 21:10 evenbao 阅读(422) 评论(0) 推荐(0)
摘要:[比赛链接] https://codeforces.com/contest/1029 [比赛经历] 本想靠DIV3上点分,没想到时差没有倒过来,最后三题收场,第二天SYSTEM TEST的时候D题还被卡常了,最后只加了1rating,算是一场比较失败的比赛吧 [题解] A. Many Equal S 阅读全文
posted @ 2018-08-26 19:18 evenbao 阅读(511) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4010 [算法] 建反向图,在反向图上拓扑排序即可,注意用堆代替队列 时间复杂度 :O(N) [代码] 阅读全文
posted @ 2018-08-16 15:50 evenbao 阅读(146) 评论(0) 推荐(0)
摘要:[题目链接] http://poj.org/problem?id=3253 [算法] 首先, 进行了(n - 1)次切割后,原木板一定被切成了a1,a2,a3...an共n块 我们不妨考虑从终止状态到开始状态的最小代价,这与原问题是完全等价的,不难看出最后的答案就是哈夫曼最优编码 [代码] 阅读全文
posted @ 2018-08-09 21:53 evenbao 阅读(128) 评论(0) 推荐(0)
摘要:[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4261 [算法] 首先,有一个结论 : | a[1] - k | + | a[2] - k | + ... + | a[n] - k | 当k取(a[1],a[2], ... , a[n])的中位数时 阅读全文
posted @ 2018-07-23 21:38 evenbao 阅读(286) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3784 [算法] 首先简单介绍一下点分治序列 : 点分治序列和DFS序列,BFS序列等类似,是将点分治过程中每次的分治中心连在一起形成的序列,显然,点分治序列的长度是(N log N)的 阅读全文
posted @ 2018-07-18 15:09 evenbao 阅读(260) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2006 [算法] Sprase Table + 堆 [代码] 阅读全文
posted @ 2018-07-17 14:30 evenbao 阅读(175) 评论(0) 推荐(0)
摘要:【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=2288 【算法】 先将这个序列的正负数合并起来,变成一个正负交替的序列 如果新序列的正数个数小于等于M,那么直接输出正数的和即可 否则,我们可以将某些正数和负数合并起来,或者不要某些正数 阅读全文
posted @ 2018-07-03 08:43 evenbao 阅读(124) 评论(0) 推荐(0)
摘要:【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=1150 【算法】 首先,有一个很显然的结论 : 如果要使距离和最小,必须选择相邻的办公楼配对 问题就转化为了 : 有一个包含(n-1)个数的序列,在这(n-1)个数中选k个,相邻的数不能 阅读全文
posted @ 2018-07-02 10:07 evenbao 阅读(225) 评论(0) 推荐(0)
摘要:【题目链接】 http://poj.org/problem?id=2442 【算法】 堆 【代码】 阅读全文
posted @ 2018-07-01 20:52 evenbao 阅读(187) 评论(0) 推荐(0)
摘要:【题目链接】 http://poj.org/problem?id=1456 【算法】 贪心 + 堆 【代码】 阅读全文
posted @ 2018-07-01 19:41 evenbao 阅读(137) 评论(0) 推荐(0)
摘要:【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=1572 【算法】 贪心 先将这些工作按截至时间排序 建立一个小根堆,当决策是否完成一项工作时,若堆的大小小于该工作的截止时间,则将这项工作所获得的利润放入堆,否则,将这项工作的利润与堆顶 阅读全文
posted @ 2018-07-01 16:46 evenbao 阅读(133) 评论(0) 推荐(0)
摘要:【题目链接】 http://poj.org/problem?id=3190 【算法】 将这些牛按开始吃草的时间排序 维护一个数组S,Si表示畜栏i进去的最后一头牛结束吃草的时间,对于每头牛,找任意一个畜栏使得 Si < 这头牛开始吃草时间,将这头牛加入这个畜栏,如果不存在这样的畜栏,则新建一个 这个 阅读全文
posted @ 2018-06-28 11:59 evenbao 阅读(158) 评论(0) 推荐(0)
摘要:【题目链接】 http://poj.org/problem?id=3784 【算法】 对顶堆算法 要求动态维护中位数,我们可以将1-M/2(向下取整)小的数放在大根堆中,M/2+1-M小的数放在小根堆中 每次插入元素时,先将插入元素与小根堆堆顶比较,如果比堆顶小,则插入小根堆,否则,插入大根堆,然后 阅读全文
posted @ 2018-06-27 20:34 evenbao 阅读(176) 评论(0) 推荐(0)
摘要:【题目链接】 点击打开链接 【算法】 前缀和 + 堆 【代码】 阅读全文
posted @ 2018-03-15 21:43 evenbao 阅读(158) 评论(0) 推荐(0)
摘要:【题目链接】 点击打开链接 【算法】 将T2从小到大排序,当决策当前建筑修或不修时,若当前花费时间 + T1 <= T2,则修,否则判断T1是否小于之前修的 T1最大的建筑,若小于,则修,我们可以用一个大根堆来维护T1的最大值 这题用的其实就是贪心的思想 : 从局部最优到全局最优 【代码】 阅读全文
posted @ 2018-03-03 14:20 evenbao 阅读(160) 评论(0) 推荐(0)

1