摘要: 传送门 这题以前搞过,不过总是没懂。今天偶然看到以后思考了一下明白了。 可能这道题提醒人的重点在于,任何一个数也可以表示成为负进制的幂次方形式。这样的话,回想起正数是怎么表示的,我们仿照正数的做法,只要进行短除即可。不过因为短除之后你的结果不能是负数,所以如果出现了负数,你就要在原数“借1”(不过因 阅读全文
posted @ 2018-11-08 18:11 CaptainLi 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 传送门 模拟题……然后被魔改成了小乔放技能…… 考试的时候一开始想二维差分,TLE+MLE,想扫描线,没法确定是否被覆盖K次,之后想一维差分,以为能过,后来发现因为有可能并不是相邻大小的半径覆盖一个区间,所以对半径排序是不好使的的。 但其实这样真的行,我们只要用平衡树维护一下即可(顺便还得启发式合并 阅读全文
posted @ 2018-11-08 18:01 CaptainLi 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 传送门 一道很好的树形DP! 这道题需要分类讨论。我们用dp[i][0]表示以i为根的子树内没有敌人的最小花费,dp[i][1]表示以i为根的子树内有敌人的最小花费,根据题目描述,合法情况只能有一个敌人。至于有没有敌人,我们可以通过先记录一下哪里有敌人,之后进行一下按位或。 考虑当前如果根节点有敌人 阅读全文
posted @ 2018-11-08 17:17 CaptainLi 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 传送门 bin哥表示,此题难度根本没有那么高,应该是蓝题或者绿题。 当然像我这样的juruo自己没想出来,听了bin哥的讲解。 其实想法很简单,我们用dp[i]表示在i节点出能得到的最大的毛毛虫的大小。因为我们要保证只有一条链,所以其实DP值只能从i节点所有的子节点中找一个DP值最大的进行更新,就是 阅读全文
posted @ 2018-11-08 17:06 CaptainLi 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题题目描述很长……不过我们需要静下来仔细看看题,其实题目并没有那么难。(虽然说是bin哥讲的) 我们发现,首先这个树的深度不是很大,最多不会超过40,那么我们可以以此作为一个突破口进行分析。之后我们又发现,你能修改的,只是所有非叶子结点所连的两条边之中的一条,而且树是一棵完全二叉树。 所 阅读全文
posted @ 2018-11-08 16:57 CaptainLi 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 传送门 开始之前先致敬一下伟大的海上钢琴师1900. 我们想到可以对于每一个时间段进行DP,这样的话,用dp[i][j][t]表示在第t个时间段的结束,钢琴在第(i,j)位置的时候最远行走的路程。对于不同的方向转移不大一样,有dp[i][j][t] = max{dp[p][q][t-1] + i - 阅读全文
posted @ 2018-11-08 16:10 CaptainLi 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题也是很好的单调队列优化DP,不过细节很多。 感觉这个题的状态其实可以借鉴上一道题fence?我们能想到用dp[i][j]表示这位大佬在第i天持有j份股票得到的最大的钱数,我们进行分类讨论。 首先是不进行交易,这个很显然是dp[i][j] = max(dp[i][j],dp[i-1][j 阅读全文
posted @ 2018-11-08 15:53 CaptainLi 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题是一道很好的单调队列优化DP的例子。 题目大意是有n个工人,每个人可以粉刷一段长度不超过l[i]的墙,如果一个人粉刷了那么他必须要粉刷第s[i]块墙,一个人粉刷一块墙能得到p[i]的钱,求所有工人得到的钱的最大值。 我们首先把所有工人按s[i]排序,这样方便我们线性DP。 考虑DP,用 阅读全文
posted @ 2018-11-08 15:42 CaptainLi 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 传送门 这个题真难写(大雾 其实还是很好想的,因为我们发现每一行的最大/小值是可以用单调队列维护的,每一列的也是可以用单调队列维护的,所以直接用单调队列分别维护行和列即可。 有大神的做法是先把每列的结果处理出来之后计算,我是直接两边一起进行……不过其实都一样,我的代码相比之下要长上一些。单调队列不是 阅读全文
posted @ 2018-11-08 15:25 CaptainLi 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 01分数规划,简单的来说,就是有一些二元组(si,pi),从中选取一些二元组,使得∑si / ∑pi最大(最小)。 这种题一类通用的解法就是,我们假设x = ∑si / ∑pi的最大(小)值,那么就有x * ∑pi = ∑si ,即∑si - x * ∑pi= 0。也就是说,当某一个值x满足上述式子 阅读全文
posted @ 2018-11-08 15:01 CaptainLi 阅读(5172) 评论(1) 推荐(1) 编辑