11 2018 档案
摘要:在解析几何中,我们大量的使用列方程求解未知量。但是在计算机计算的时候,解析几何的算法因为使用除法过多可能会带来严重的精度误差,所以简单来说,计算几何使用了一些其他的等效的方法来解决这些问题。 这里先说一个比较基础的题目,大意为给定一个点数为n的正方形,点按照顺序给出,给定m个点,判断点是否在多边形内
阅读全文
摘要:传送门 这题以前搞过,不过总是没懂。今天偶然看到以后思考了一下明白了。 可能这道题提醒人的重点在于,任何一个数也可以表示成为负进制的幂次方形式。这样的话,回想起正数是怎么表示的,我们仿照正数的做法,只要进行短除即可。不过因为短除之后你的结果不能是负数,所以如果出现了负数,你就要在原数“借1”(不过因
阅读全文
摘要:传送门 模拟题……然后被魔改成了小乔放技能…… 考试的时候一开始想二维差分,TLE+MLE,想扫描线,没法确定是否被覆盖K次,之后想一维差分,以为能过,后来发现因为有可能并不是相邻大小的半径覆盖一个区间,所以对半径排序是不好使的的。 但其实这样真的行,我们只要用平衡树维护一下即可(顺便还得启发式合并
阅读全文
摘要:传送门 一道很好的树形DP! 这道题需要分类讨论。我们用dp[i][0]表示以i为根的子树内没有敌人的最小花费,dp[i][1]表示以i为根的子树内有敌人的最小花费,根据题目描述,合法情况只能有一个敌人。至于有没有敌人,我们可以通过先记录一下哪里有敌人,之后进行一下按位或。 考虑当前如果根节点有敌人
阅读全文
摘要:传送门 bin哥表示,此题难度根本没有那么高,应该是蓝题或者绿题。 当然像我这样的juruo自己没想出来,听了bin哥的讲解。 其实想法很简单,我们用dp[i]表示在i节点出能得到的最大的毛毛虫的大小。因为我们要保证只有一条链,所以其实DP值只能从i节点所有的子节点中找一个DP值最大的进行更新,就是
阅读全文
摘要:传送门 这道题题目描述很长……不过我们需要静下来仔细看看题,其实题目并没有那么难。(虽然说是bin哥讲的) 我们发现,首先这个树的深度不是很大,最多不会超过40,那么我们可以以此作为一个突破口进行分析。之后我们又发现,你能修改的,只是所有非叶子结点所连的两条边之中的一条,而且树是一棵完全二叉树。 所
阅读全文
摘要:传送门 开始之前先致敬一下伟大的海上钢琴师1900. 我们想到可以对于每一个时间段进行DP,这样的话,用dp[i][j][t]表示在第t个时间段的结束,钢琴在第(i,j)位置的时候最远行走的路程。对于不同的方向转移不大一样,有dp[i][j][t] = max{dp[p][q][t-1] + i -
阅读全文
摘要:传送门 这道题也是很好的单调队列优化DP,不过细节很多。 感觉这个题的状态其实可以借鉴上一道题fence?我们能想到用dp[i][j]表示这位大佬在第i天持有j份股票得到的最大的钱数,我们进行分类讨论。 首先是不进行交易,这个很显然是dp[i][j] = max(dp[i][j],dp[i-1][j
阅读全文
摘要:传送门 这道题是一道很好的单调队列优化DP的例子。 题目大意是有n个工人,每个人可以粉刷一段长度不超过l[i]的墙,如果一个人粉刷了那么他必须要粉刷第s[i]块墙,一个人粉刷一块墙能得到p[i]的钱,求所有工人得到的钱的最大值。 我们首先把所有工人按s[i]排序,这样方便我们线性DP。 考虑DP,用
阅读全文
摘要:传送门 这个题真难写(大雾 其实还是很好想的,因为我们发现每一行的最大/小值是可以用单调队列维护的,每一列的也是可以用单调队列维护的,所以直接用单调队列分别维护行和列即可。 有大神的做法是先把每列的结果处理出来之后计算,我是直接两边一起进行……不过其实都一样,我的代码相比之下要长上一些。单调队列不是
阅读全文
摘要:01分数规划,简单的来说,就是有一些二元组(si,pi),从中选取一些二元组,使得∑si / ∑pi最大(最小)。 这种题一类通用的解法就是,我们假设x = ∑si / ∑pi的最大(小)值,那么就有x * ∑pi = ∑si ,即∑si - x * ∑pi= 0。也就是说,当某一个值x满足上述式子
阅读全文
摘要:传送门 这个题一开始不会转移了……因为自己状态设定的不对。 应该参考一下约瑟夫问题的操作,设dp[i][j]表示在有i个人的时候从庄家开始数第j个人的获胜概率。这样的话,我们只要枚举每张卡牌,这样的话,每个人获胜的概率就能由有i-1个人的时候推出来,因为其实淘汰一个人就是相当于把队列向前移动几位,但
阅读全文
摘要:池塘中有n片荷叶恰好围成了一个凸多边形,有一只小青蛙恰好站在1号荷叶上,小青蛙想通过最短的路程遍历所有的荷叶(经过一个荷叶一次且仅一次),小青蛙可以从一片荷叶上跳到另外任意一片荷叶上。输入数据(frog.in) 第一行为整数n,荷叶的数量。接下来n行,每行两个实数,为n个多边形的顶点坐标,按照顺时针
阅读全文
摘要:题目描述:给定一个正N边形,可以通过连线将这个多边形分割成N-2个三角形,问这N-2个三角形中恰有k个等腰三角形的分割方法有多少?这个值可能很大,输出对9397取模的结果。数据范围:n,k <= 50. 这道题也是区间DP,不过稍微难一点。 首先我们先想个办法判断等腰三角形,因为这是一个正多边形,所
阅读全文
摘要:传送门 (LOJ升级版) 这道题虽然是基础的区间DP,但是还是很值得一说的。 我们用dp[i][j]表示第i个点到第j个点划分的最大值。注意我们只枚举了两个端点,第三个顶点是我们枚举的那个k,之后发现k这个顶点可以把整个区间分成两块,我们就可以进行区间DP了。 只不过这道题要使用高精度。需要自己重载
阅读全文