04 2019 档案

摘要:POJ1026题意:对字符串按照置换操作k次,求最后的结果。题解求出每一个位置循环的长度,最后操作时,k对长度取模为k'。只需要变换k'次即可。代码#include #include #include #incl... 阅读全文
posted @ 2019-04-30 10:30 月光下の魔术师 阅读(18) 评论(0) 推荐(0)
摘要:ural 1996题解只有最后一个数字可以修改,所以我们把最后一个单独那出来。比如A串单独拿出来为1 0 1 1 0 1,B串为1 0 0。那么对于第i个位置,我们可以计算从第i-m+1个位置开始至此,共有多少个... 阅读全文
posted @ 2019-04-25 14:13 月光下の魔术师 阅读(17) 评论(0) 推荐(0)
摘要:HDU5758题意:求一棵树最少有几条链构成,求链的最短长度和。题解首先必须明确,最少的链一定是从叶子结点到叶子结点。 如果叶子结点有奇数个,偶数个配对,剩下的一个向外面的叶子配对。 如果叶子结点有偶数个,正好可... 阅读全文
posted @ 2019-04-15 08:06 月光下の魔术师 阅读(14) 评论(0) 推荐(0)
摘要:POJ1947题解总共有n个结点的树,最少删去几条边,变成含有m个结点的子树。 dp[i][j]表示以i为根,含j个结点的树,最少需要删去的边数。 状态转移: dp[u][i] = min(dp[u][i],dp... 阅读全文
posted @ 2019-04-14 22:46 月光下の魔术师 阅读(7) 评论(0) 推荐(0)
摘要:HDU2196题解 在一棵树上,求每个结点能到达的最远距离。 设结点到子树的最大距离为深度。那么结点能到达的最远距离可能为深度(1),也可能为经过先到父结点再到兄弟结点的子树(2),或者直接一直往上走到另一边(3... 阅读全文
posted @ 2019-04-14 22:01 月光下の魔术师 阅读(6) 评论(0) 推荐(0)
摘要:HDU6446题解任何一种排列在树上都可以实现。那么我么固定两个结点i和j,记dis(i,j)为i和j的最短距离。那么从i和j放置数,有2*(n-1)种情况。剩下的n-2个点有(n-2)!种情况。所以一共有2*(... 阅读全文
posted @ 2019-04-14 21:26 月光下の魔术师 阅读(11) 评论(0) 推荐(0)
摘要:POJ3659题意:最小点覆盖所有的点。题解首先要明确最小支配集和最小点覆盖的区别。 最小点覆盖是选取最少的点,使所有的边都与集合的点相连。最小点覆盖 = 二分图最大匹配 最小支配集是选取最少的点,使所有的点都... 阅读全文
posted @ 2019-04-14 21:09 月光下の魔术师 阅读(49) 评论(0) 推荐(0)
摘要:POJ3585题解选择一个点,使它到所有端点的流量和最大。 一棵树,我们可求每个结点到子树的端点的最大流量和。DFS一遍,自低先上。设g[u]表示到u结点到子树端点的最大流量和,那么g[u] += min(g[v... 阅读全文
posted @ 2019-04-14 20:38 月光下の魔术师 阅读(10) 评论(0) 推荐(0)
摘要:很基础的一类题目,要用到01背包问题的思想。ZOJ3201题解含有k个结点的权值和最大的子树。 dp[i][j]表示以i为根的,含有j个结点的最大权值 dp[i][j] = max(dp[i][j],dp[i][... 阅读全文
posted @ 2019-04-14 19:44 月光下の魔术师 阅读(12) 评论(0) 推荐(0)
摘要:luogu1064题解有依赖的背包关系,实际上很好理解。我们只要考虑主件。 有5总状态要考虑。不选主件 只选主件 选主件和附件1 选主件和附件2 选主件和附件1和附件2其它都和01背包一样,只不过现在是多件物品。... 阅读全文
posted @ 2019-04-14 19:17 月光下の魔术师 阅读(10) 评论(0) 推荐(0)
摘要:HDU2476题解首先将空串刷成目标串的最小方案数。 对于abbaa,我们两次就可以搞定。aaaaa-->abbaa,一次性连续刷一段,再刷中间。从头开始一段段刷是最差的方法。 再从给定串刷到目标串的最优方案。代... 阅读全文
posted @ 2019-04-12 09:27 月光下の魔术师 阅读(11) 评论(0) 推荐(0)
摘要:HDU4283题意:第k出场的嘉宾会有(k-1)*d的不满意度。 所以为了让不满意度最小,改变出场顺序,让嘉宾进入黑屋子。 第一个进入的是最后一个出去(堆栈)。题解dp[i][j]表示第i到第j个嘉宾都出场了的最... 阅读全文
posted @ 2019-04-12 09:20 月光下の魔术师 阅读(28) 评论(0) 推荐(0)
摘要:ZOJ3469题解对位置进行排序(包括外卖小哥的),然后求愤怒值的前缀和。 dp[i][j][k]表示送完[i,j]的所有人的最优方案,k = 0表示在i,k = 1表示在j。 dp[i][j][0]可以由dp[... 阅读全文
posted @ 2019-04-12 09:11 月光下の魔术师 阅读(13) 评论(0) 推荐(0)
摘要:CF149D题解首先明确括号的匹配是惟一的。所以用一个栈模拟,用数组match记录左括号对应的右括号的位置。 染色要求是:可以染红或蓝或者无色。 每一对括号有且仅有一个染色。 相邻不能染相同的颜色,但可以都不染色... 阅读全文
posted @ 2019-04-12 08:49 月光下の魔术师 阅读(9) 评论(0) 推荐(0)
摘要:lightoj1042题解dp[i][j]表示第i天到第j天穿的最少的衣服。初始化dp[i][i] = 1(一天必须穿一件),dp[i][j] = inf。 如果第i天和第j天穿的是一件衣服,那么dp[i][j]... 阅读全文
posted @ 2019-04-12 08:40 月光下の魔术师 阅读(6) 评论(0) 推荐(0)
摘要:UVA1331题解dp[i][j]表示从区间[i,j]最大三角形的最小值,中间找一点k。 状态转移为:dp[i][j] = min(dp[i][j],max(getarea(p[i],p[j],p[k]),max... 阅读全文
posted @ 2019-04-12 08:33 月光下の魔术师 阅读(11) 评论(0) 推荐(0)
摘要:POJ2540题解如果比之前更远,那么在两点的中垂线靠近之前的那边,反之另一边。 我们可以找出a和b的终点,在把确定向量ab,根据情况旋转90或270。 如果出现same那就不再计算 了。代码#include #... 阅读全文
posted @ 2019-04-11 08:36 月光下の魔术师 阅读(10) 评论(0) 推荐(0)
摘要:POJ3384题解多边形向内部推进r个单位,判断是否存在半平面交。然后求新的多边形上距离最远的两点。直接暴力,不用旋转卡壳。 注意如果半平面交可能是一个点。代码#include #include #include... 阅读全文
posted @ 2019-04-11 08:14 月光下の魔术师 阅读(9) 评论(0) 推荐(0)
摘要:LA3890题解相当于求岛上半径最大的圆。 二分枚举半径r。把每一条边向里面平移r,如果存在这样的圆,那么平移后的存在半平面交。代码#include using namespace std;const doubl... 阅读全文
posted @ 2019-04-10 23:34 月光下の魔术师 阅读(7) 评论(0) 推荐(0)
摘要:luogu1063题解类似矩阵最优连乘。 因为是环,所以再复制一份加在数组后面。 dp[i][j]表示起始位置是i,末尾是j的最大值。因为长的区间取决于短的区间。所以区间的长度要从小到大枚举。然后再枚举区间的起始... 阅读全文
posted @ 2019-04-10 23:19 月光下の魔术师 阅读(17) 评论(0) 推荐(0)
摘要:CF629D题解相当于求最大上升子序和。dp超时,树状数组处理。 数组数组维护的是有pos为末的最大子序和。代码#include using namespace std;typedef long long ll;... 阅读全文
posted @ 2019-04-10 08:17 月光下の魔术师 阅读(81) 评论(0) 推荐(0)
摘要:CF376D题解因为n组数据是要按字典序排列。所以我们只需考虑上下相邻的两组是否满足条件,总共有n-1对。 每一对都有一个变化的区间,最后我们求出n-1对的变化区间。变化区间自己写写就能找到规律。最后判断是否存在... 阅读全文
posted @ 2019-04-10 08:10 月光下の魔术师 阅读(4) 评论(0) 推荐(0)
摘要:CF1076E题意:给你一棵以1为根的树,每次把以x为根,深度不大于k的点的值全部加上v。最后求每个结点的值。题解dfs从根开始遍历,那么遍历到每一个点,其深度是确定的。 x根的深度为dep,深度不大于k的点都加... 阅读全文
posted @ 2019-04-10 08:00 月光下の魔术师 阅读(6) 评论(0) 推荐(0)
摘要:POJ2451代码#include #include #include #include #include #include using namespace std;double const eps = 1e-1... 阅读全文
posted @ 2019-04-09 21:53 月光下の魔术师 阅读(9) 评论(0) 推荐(0)
摘要:POJ2420题解:广义费马点,利用模拟退火算法。记录一下代码#include #include #include #include #include #include using namespace std;d... 阅读全文
posted @ 2019-04-07 21:32 月光下の魔术师 阅读(19) 评论(0) 推荐(0)
摘要:稳定凸包:POJ1228题意:给你n个点,判断是否能唯一确定一个凸包。即判断是否为稳定凸包题解:图来自https://www.cnblogs.com/xdruid/archive/2012/06/20/25555... 阅读全文
posted @ 2019-04-07 19:16 月光下の魔术师 阅读(54) 评论(0) 推荐(0)
摘要:CF903F题解'*'用1表示,'.'用0表示。总共4行,从左到右一列一列遍历,使每一列按顺序变成0。 每一列的状态为state |= 1using namespace std;int const N = 100... 阅读全文
posted @ 2019-04-07 10:27 月光下の魔术师 阅读(9) 评论(0) 推荐(0)
摘要:CF152E题意:翻转'.'为'X',使所有的'X'都相连,并且使花费最少。题解ydp[x][y][z]表示点(x,y)分割状态z为两部分s1和s2,两部分都经过点(x,y),并且满足s1&s2 = 0,s1^s... 阅读全文
posted @ 2019-04-07 09:44 月光下の魔术师 阅读(7) 评论(0) 推荐(0)
摘要:CF302E题意每一行为好记满足:在这一行至少有一个字母在这一列是只出现一次的。 修改每一个字母都要费用,求使每一行都好记的最小费用。题解使一行的字母好记,可以修改某一个字母,或者修改这一列的与这个字母相同的字母... 阅读全文
posted @ 2019-04-07 09:12 月光下の魔术师 阅读(7) 评论(0) 推荐(0)
摘要:POJ1185题意只有p才可以部署部队,攻击范围是四周两格。求最多能够部署的部队个数。题解dp[i][j][k]表示第i行的状态为j,上一行的状态为k的方案数。 从上到下枚举每一行,进行状态压缩。判断相连三个1的... 阅读全文
posted @ 2019-04-06 23:05 月光下の魔术师 阅读(3) 评论(0) 推荐(0)
摘要:POJ3254题意选择1,使任意两个1不能相邻。求方案数题解dp[i][j]表示第i行第j种状态的方案数。初始化dp[0][0] = 1。 枚举每一行种的方案数,首先必须满足不能有相邻的1,并且种的位置都是1。 ... 阅读全文
posted @ 2019-04-06 21:52 月光下の魔术师 阅读(14) 评论(0) 推荐(0)
摘要:CF417D题意一共需要解决m道问题。小伙伴至少需要y台监视器才答应写题目,每台b元。每个人又需要x元的费用。给出每个人可以解决的题目。最少需要多少花费能够解决所有问题。题解状态压缩DP。把每个人可以解决的题目给... 阅读全文
posted @ 2019-04-06 21:38 月光下の魔术师 阅读(12) 评论(0) 推荐(0)
摘要:CF734E题意:一棵树上有黑白两种颜色的结点,每次可以把连通的一种颜色变成另一种颜色。求至少要多少次,才能是整棵树变为一种颜色。题解先求连通块,把颜色相同的连通块放在一起。不用Tarjan,dfs就可以直接搞定... 阅读全文
posted @ 2019-04-06 21:26 月光下の魔术师 阅读(12) 评论(0) 推荐(0)
摘要:POJ2284题解欧拉定理:顶点数V,边数E,面数F满足V + F - E = 2,所以F = E + 2 - V 点数包括原有的点和新的相交的点。所以每两条线段求交点。但是去掉交点重复的点。求得V 在原先边的基... 阅读全文
posted @ 2019-04-04 21:08 月光下の魔术师 阅读(6) 评论(0) 推荐(0)
摘要:POJ1265题解皮克定理:给定顶点座标均是整点的简单多边形,其面积和内部格点数目、边上格点数目满足关系: 边上点的个数为 gcd(abs(p[i-1].x-p[i].x),abs(p[i-1].y-p[i].y... 阅读全文
posted @ 2019-04-04 14:56 月光下の魔术师 阅读(14) 评论(0) 推荐(0)
摘要:POJ1584题解首先要判断多边形使否是凸边形。对于连续的点a、b、c,就要判断ab×bc是否都是同号。 其次要判断圆心是否在多边形的内部,因为是凸边形,所以很好判断。对于连续的点a,b,c和圆心o,判断ba×b... 阅读全文
posted @ 2019-04-01 18:49 月光下の魔术师 阅读(8) 评论(0) 推荐(0)
摘要:POJ3347题解这道题的解法很神奇。与投影的区间范围有关。为了排除精度的误差,所以我们把边长同时扩大根号2倍。这样子对角线程度就是2倍边长。 怎么求左右端点的左边呢?假设求第i个正方形左端点,已知前i-1个,那... 阅读全文
posted @ 2019-04-01 09:18 月光下の魔术师 阅读(6) 评论(0) 推荐(0)