摘要: 传送门 ovo原来简单版的非常的好做,只要肆意暴力枚举即可。 不过这道题的数据范围变成了200000,即使是洛谷神机也跑不过去的。 于是乎我们考虑分治法。 对于一个平面上的所有点,我们设其属于一个点集S。我们想要把点集S尽可能平均的分成两个点集,那么我们只要每次取当前点集中所有点的中位数进行分割即可 阅读全文
posted @ 2018-09-07 23:28 CaptainLi 阅读(1411) 评论(2) 推荐(3) 编辑
摘要: 传送门 非常有趣的状压DP。(对反正我自己又没想出来) 因为猪的数目非常的少,还是能想到状压DP。之后,因为首先小鸟都是从原点发射的,所以我们只需要两只猪就可以确定一条抛物线。 既然如此,我们就可以枚举每一对猪,计算出来抛物线的解析式,之后,因为有的时候一条抛物线可以砸死不只一只猪,所以我们可以再枚 阅读全文
posted @ 2018-09-07 22:16 CaptainLi 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 这道题的DP非常的有意思…… 一开始我们总是会以为这是一个背包问题,直接dp[0] = 0,dp[j] += dp[j-c[i]]进行转移。之后统计一下从dp[m-minn]~dp[m]的答案之和为结果。 其中minn指花费最小的那个物品的花费。不过这样是会丢解的。因为统计的过程我们只统计了不选最小 阅读全文
posted @ 2018-09-07 22:03 CaptainLi 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题一开始的暴力做法就是直接模拟之后用dij跑最短路。其实它的极限值还没到1e8不过有常数你还是会超时。 上面的暴力能得60分。 之后我们考虑正解,因为数据范围是200所以我们可以直接跑Floyd。不过问题是我们怎么在一张不是完整的图上更新距离。 Floyd算法的本质是动态规划,其转移方程 阅读全文
posted @ 2018-09-07 16:27 CaptainLi 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 传送门 ovo这题没有靠谱的多项式复杂度的做法?! 好吧我也不知道该怎么做,于是学了一个大佬的Floyd玄学算法。 具体的实现还是很简单的,就是每次使用Floyd更新,必须要满足以下情况: 1.当前三个点文化不互相排斥 2.通往k(用于更新的点)的道路上所经过的文化与当前文化不互相排斥 3.距离更小 阅读全文
posted @ 2018-09-07 15:30 CaptainLi 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 传送门 当时NOIP考试的时候我不会,现在我还是不会。 因为数据范围很小所以能猜到是状压DP。不过平时我们状压DP都是在一个矩阵里面状压DP,不过这次因为我们要打通所有的宝藏屋,那么肯定最后打通的时候通路是一棵树,我们也就是相当于在树上DP。 首先我们先说一种非常强势的做法,状压DP+dfs!(不过 阅读全文
posted @ 2018-09-07 15:21 CaptainLi 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 传送门 这题感觉还是与什么炮兵阵地之类的很相似的……不过首先看一眼数据范围,100?这怎么状压都状压不下,再者,一个炮要考虑一整行/列,直接暴力枚举肯定做不到。 那怎么办?首先很显然每行/列最多只能放两个炮。之后因为我们这道题首先不会统计你一共放多少个炮,二来统计的是方案数……看过dalao的题解之 阅读全文
posted @ 2018-09-07 14:59 CaptainLi 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 这题考试的时候并没有想出来……还是自己太弱了。 当时的想法是如何找到一条最短而且经过点最多的路,之后就一直卡在这上面出不来了…… 但后来发现并不需要这样,因为我们要求的是……路径长和经过点数的比值,所以我们可以选择在原图中跑spfa或者dij,每次走到一个新的点,就把当前点数设置为转移过来的那个地方 阅读全文
posted @ 2018-09-07 14:39 CaptainLi 阅读(500) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题是数位DP的入门题。 什么是数位Dp?简单来说,数位DP就是用于解决在一个给定区间之内,有多少个数满足条件的一种DP。其中数的多少和数的大小无关,而与数的结构有关。我们先计算出来[0,r]中符合条件的数,再计算出[0,l-1]中符合条件的数就可以。 以这道题为例,其实在数位之间DP是很 阅读全文
posted @ 2018-09-07 14:33 CaptainLi 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题还是很明显的状压DP。毕竟数据范围很小。 然后此题和前面的互不侵犯,炮兵阵地这两道题还是非常相似的。我们使用dp[i][j]表示枚举到第i行,当前行状态为j的方案数,之后直接向下一行转移就可以啦。 然后因为这道题要求的是方案数,而且并没有要求种多少草,所以没有必要记录一共有多少块草,直 阅读全文
posted @ 2018-09-07 14:18 CaptainLi 阅读(116) 评论(0) 推荐(0) 编辑