03 2016 档案

摘要:嗯,裸的最大权闭合子图。 阅读全文
posted @ 2016-03-31 21:38 WABoss 阅读(161) 评论(0) 推荐(0) 编辑
摘要:题目大概说有n个人每个人各有一个信仰0或1,他们中有m对朋友关系,现在要对一件事投票,可以为了和信仰不同的朋友一样而违背自己的信仰和朋友投一样的票,问违背信仰的人数加上和朋友投票结果不同的人数总和的最小值。 这相当于每个人要嘛分到0集合要嘛分到1集合,分到不同集合都会有0或1的花费,而朋友关系中就是 阅读全文
posted @ 2016-03-31 19:33 WABoss 阅读(213) 评论(0) 推荐(0) 编辑
摘要:题目大概说,给一个n个格子的矩阵,每个格子都有一个数字pi。求这个函数的最小值: 其中xi的取值是0或1,v0、v1已知,j是和i在矩阵中上下左右相邻的位置且j>i。 这个式子有三个加数组成A+B+C,如果格子分给1那A不起作用只有B,如果格子分给0那B不起作用只有A,而C只有当两个相邻格子一个分给 阅读全文
posted @ 2016-03-30 20:49 WABoss 阅读(209) 评论(0) 推荐(0) 编辑
摘要:题目大概说一棵n个结点的树,每个结点都可以安装某一规格的一个塔,塔有价格和能量两个属性。现在一个敌人从1点出发但不知道他会怎么走,如果他经过一个结点的塔那他就会被塔攻击失去塔能量的HP,如果HP小于等于0敌人就挂了。任务就是在总花费不超过m的条件下在各个结点安装塔,求能预防的敌人的HP的最大值。 状 阅读全文
posted @ 2016-03-30 10:33 WABoss 阅读(156) 评论(0) 推荐(0) 编辑
摘要:题目大概说有n个任务,每个任务可以提前或推迟,提前或推迟各有一定的费用,有的任务一旦推迟另一个任务也必须推迟,问怎么安排任务使花费最少,且最少花费的条件下提前的任务数最多能多少。 问题就是要把各个任务分成两个集合。这么建容量网络求最小的S-T割:源点向各个任务连容量为提前的费用的边,各个任务向汇点连 阅读全文
posted @ 2016-03-29 22:33 WABoss 阅读(159) 评论(0) 推荐(0) 编辑
摘要:没啥好说的,有写过类似的,就是预处理出最短路上的边建容量网络。 阅读全文
posted @ 2016-03-28 23:05 WABoss 阅读(255) 评论(0) 推荐(0) 编辑
摘要:题目大概说一棵n个结点树,每个结点都有宝藏,走过每条边要花一定的时间,现在要在t时间内从结点1出发走到结点n,问能获得最多的宝藏是多少。 放了几天的题,今天拿出来集中精力去想,还是想出来了。 首先,树上任意两点间最短的那条路径是唯一的,且不管怎么走一定都会走过那条路径上的所有点,也就是说整个行程可以 阅读全文
posted @ 2016-03-28 19:49 WABoss 阅读(206) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一棵有点权的树,输出字典序最小的点对,使这两点间路径上点权的乘积模1000003的结果为k。 树的点分治搞了。因为是点权过根的两条路径的LCA会被重复统计,而注意到1000003是质数,所以这个用乘法逆元搞一下就OK了。还有要注意“治”的各个实现,把时间复杂度“控制”在O(nlogn)。 阅读全文
posted @ 2016-03-27 17:05 WABoss 阅读(334) 评论(0) 推荐(0) 编辑
摘要:挺直白的构图。。最小费用最大流的定义。 阅读全文
posted @ 2016-03-27 15:04 WABoss 阅读(146) 评论(0) 推荐(0) 编辑
摘要:题目大概给一个n×m的格子,每个格子有一个一位数字,格子不能重复经过,最多进行这样的k次行走:每一次选择任意一个格子出发,可以从当前格子走到下面或右边格子,花费能量是曼哈顿距离-1,而如果起点和终点格子数字一样那就能获得那个数字的能量。问能不能走过所有的格子,如果能算出最大的最终能量。 太弱了。。官 阅读全文
posted @ 2016-03-26 19:05 WABoss 阅读(206) 评论(0) 推荐(0) 编辑
摘要:题目大概说有几个黑色、白色矩阵,问能选出黑白不相交的矩形面积和的最大值。 建二分图,黑色矩阵为X部的点,白色为Y部,XY的点权都为其矩阵面积,如果有个黑白矩阵相交则它们之间有一条边,那样问题就是要从这个二分图中选出最大的点使其没有公共边且点权和最大。 即二分图的最大点权独立集。可以建容量网络用最小割 阅读全文
posted @ 2016-03-25 23:32 WABoss 阅读(330) 评论(0) 推荐(0) 编辑
摘要:题目大概说n个学生,都各自有一个互不相同的成绩排名,他们各自说了他们成绩排名所在区间,问最多有几个学生没说谎以及字典序最大的没说谎的学生序列。 学生作为一个X部的点,排名作为Y部的点,学生与其成绩排名的区间的各个点之间连边,这其实就是求这个二分图的最大匹配。 排名最多10W,边容量为1,不离散化跑网 阅读全文
posted @ 2016-03-25 18:47 WABoss 阅读(280) 评论(0) 推荐(0) 编辑
摘要:题目大概说一棵树有边权,要删掉一些边,使叶子到达不了树根1且删掉边的权和小于等于m,问删掉边中最大权的最小值能是多少。 考虑问题规模,与转移的时间复杂度,用这么个状态dp: 转移略蛋疼,初始值的设定之类的感觉有点不统一。。反正最后感觉自己写得有点挫。。 阅读全文
posted @ 2016-03-24 20:13 WABoss 阅读(152) 评论(0) 推荐(0) 编辑
摘要:题目大概说,给一个n×m的格子,每个格子都有数字,选择一个格子就能加上格子数字的分数,有k个格子必须选择,如果两个相邻的格子都被选择了那分数要减去两个格子数字的与再乘2。问能取得的最大分数。 已经知道这题是最小割。。黑白染色,画了下图,觉得很有道理,然后写了写就AC了。。具体建图是这样的: 这样S- 阅读全文
posted @ 2016-03-23 21:49 WABoss 阅读(357) 评论(0) 推荐(0) 编辑
摘要:题目大概是给一棵n个结点边带权的树,记结点i到其他结点最远距离为d[i],问d数组构成的这个序列中满足其中最大值与最小值的差不超过m的连续子序列最长是多长。 各个结点到其他结点的最远距离可以用树形DP解决,HDU2196。 而那个最长的连续子序列可以用单调队列求。。搞了挺久看了解法体会了下。。简单来 阅读全文
posted @ 2016-03-23 18:39 WABoss 阅读(536) 评论(0) 推荐(0) 编辑
摘要:题目大概说一个n×m的格子中,'.'代表空地,'#'代表障碍,'K'代表骑士,'D'代表目的地。骑士每走一步花一条,每一步可以往(+2,+3)(-2,+3)...八个方向走,问占领所有目的地最少要几天。 二分枚举天数用最大流判定能否成立——建图关键在于把每一个格子点拆成天数个的点,因为每个格子每天只 阅读全文
posted @ 2016-03-22 21:18 WABoss 阅读(264) 评论(0) 推荐(0) 编辑
摘要:题目大概是,给一棵树,统计距离为k的点对数。 不会DP啊。。点分治的思路比较直观,啪啪啪敲完然后AC了。具体来说是这样的: 阅读全文
posted @ 2016-03-21 21:08 WABoss 阅读(642) 评论(0) 推荐(0) 编辑
摘要:题目大概说,一个国家有n个城市,由m条双向路相连,小偷们从城市s出发准备到h城市,警察准备在某些除了s和h外的城市布置警力抓小偷,各个城市各有警力所需的数目。问警察最少要布置多少警力才能万无一失地抓住所有小偷。 相当于就是用最小的花费让s到达不了h。这么建容量网络: 每个城市拆点连容量为需要警力数量 阅读全文
posted @ 2016-03-20 15:01 WABoss 阅读(189) 评论(0) 推荐(0) 编辑
摘要:题目大概说一个1×n的格子,每个格子都有一定的黄金,起点在1,终点在n,通过投掷6面骰子前进与骰子点数一样的步数,如果会超过n就重新投,每到一个格子就获得其中的黄金。问到达n能得到的黄金数目的期望。 求概率是正推,求期望是逆推。。容我慢慢体会。。 期望: 也可以先求到每个格子的概率,然后概率×黄金数 阅读全文
posted @ 2016-03-19 22:45 WABoss 阅读(193) 评论(0) 推荐(1) 编辑
摘要:题目大概说你正在起点,面前有$n$个门,每个门有一个数字$x$,正数表示开这个门$x$分钟后会出去,负数表示开这个门$-x$分钟后会回到起点。选择门的概率是一样的且每次选择互不影响。问出去的时间期望是多少。 $d[0]$表示从起点出发出去的期望,$d[i](1\leqslant i\leqslant 阅读全文
posted @ 2016-03-19 22:17 WABoss 阅读(222) 评论(0) 推荐(0) 编辑
摘要:题目大概是有两个音乐厅,有n个乐队申请音乐厅,他们必须从第ii天到第ji天连续开音乐会且他们的开价是wi,每天每个音乐厅都只能供一个乐队进行音乐会。问接受哪些乐队的申请,获利最多能多少。 这题相当于在一条数轴上选择最大权和的线段,使两两相交的线段不超过两个。POJ3680,区间k覆盖。 先把每个申请 阅读全文
posted @ 2016-03-19 09:51 WABoss 阅读(264) 评论(0) 推荐(0) 编辑
摘要:题目大概一个国家n个城市由m条单向边相连,摧毁每条边都有一个费用。现在你可以选择所给的f个城市中的若干个,每个城市选择后都有一定的价值,但首都1号城市必须到达不了你选择的城市,因为你可能需要摧毁一些边,这样你的获利就是选择城市的价值和减摧毁边的总花费。问,最大的获利是多少以及摧毁哪些边。 如此建容量 阅读全文
posted @ 2016-03-19 08:52 WABoss 阅读(335) 评论(0) 推荐(0) 编辑
摘要:题目,求最短的包含所有n个DNA片段且不包含任何一个病毒片段的序列。 容易用所有DNA片段和病毒片段建一个AC自动机,构造fail时处理一下各个结点后缀是DNA或者病毒的情况,然后dp[S][u]表示包含DNA片段的集合是S的且后缀状态是自动机第u个结点的最短序列长度,然后顺着AC自动机避开病毒串转 阅读全文
posted @ 2016-03-18 21:13 WABoss 阅读(232) 评论(0) 推荐(0) 编辑
摘要:题目大概是一棵树,每个结点都有若干个苹果,求从结点1出发最多走k步最多能得到多少个苹果。 考虑到结点可以重复走,容易想到这么个状态: 转移就是: 不过这样提交WA。。然而看不出哪里有错。。无奈看别人代码,发现转移少考虑了一种情况—— 真的想不到。。 阅读全文
posted @ 2016-03-18 16:47 WABoss 阅读(267) 评论(0) 推荐(1) 编辑
摘要:题目,求包含所有的给定的n个DNA片段的序列的最短长度。 AC自动机上的DP题。 阅读全文
posted @ 2016-03-16 22:45 WABoss 阅读(364) 评论(0) 推荐(0) 编辑
摘要:题目大概是说,一个村庄有n间房子,房子间有m条双向路相连。1号房子有网络,有k间房子要通过与1号房子相连联网,且一条路上不能有同样颜色的线缆,问最少要用几种颜色的线缆。 二分枚举颜色个数,建立容量网络跑最大流判断解是否成立:源点是1,所有要联网的房子向汇点连容量1的边,所有双向边改为容量为枚举的解的 阅读全文
posted @ 2016-03-16 20:41 WABoss 阅读(440) 评论(0) 推荐(0) 编辑
摘要:题目大概说,有n头牛和b块草地,每头牛心中分别对每块草地都有排名,草地在牛中排名越高牛安排在那的幸福度就越小(。。。),每块草地都能容纳一定数量的牛。现在要给这n头牛分配草地,牛中的幸福度最大与幸福度最小的差值越小越好,问最小能多小。 显然又是枚举结果跑最大流看是否合法。不过,枚举幸福度的差值是做不 阅读全文
posted @ 2016-03-15 23:26 WABoss 阅读(303) 评论(0) 推荐(0) 编辑
摘要:题目大概说,alsomagic有宝石,宝石有颜色和形状两个属性;他有一种法力可以将某些颜色形状的宝石转化成另一种颜色形状的宝石;他的女朋友对各个颜色都有一定的容忍数量,而他自己也对各个形状都有一定的容忍数量,超过这个数量就不行;问能否有成功把宝石分成两份,一份给他,一份给他女朋友。 题目这句话“Bu 阅读全文
posted @ 2016-03-15 20:39 WABoss 阅读(224) 评论(0) 推荐(0) 编辑
摘要:给定正整数序列x1,..., xn (n<=500)。(1)计算其最长递增子序列的长度s。(2)计算从给定的序列中最多可取出多少个长度为s的递增子序列。(3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的递增子序列。 这题求的其实是最长非递减子序列。。 第一问,是 阅读全文
posted @ 2016-03-14 22:19 WABoss 阅读(254) 评论(0) 推荐(0) 编辑
摘要:题目大概是给一棵树,问最少删几条边可以出现一个包含点数为p的连通块。 任何一个连通块都是某棵根属于连通块的子树的上面一部分,所以容易想到用树形DP解决: 转移好烦,写得我好累好累。。还好1A了。。   阅读全文
posted @ 2016-03-13 20:30 WABoss 阅读(152) 评论(0) 推荐(0) 编辑
摘要:题目大概是,普通骨牌连接两张关键骨牌,一旦一张关键骨牌倒下与其相邻的普通骨牌也倒下,普通骨牌倒下与其相邻的骨牌也倒下。给出所有有普通骨牌相连的两个关键骨牌之间普通骨牌倒下所需时间,问1号关键骨牌开始倒下后最后一张骨牌倒下的时间和位置。 居然是最短路。。记dist[u]为起点骨牌1到关键骨牌u的最短时 阅读全文
posted @ 2016-03-13 11:17 WABoss 阅读(240) 评论(0) 推荐(0) 编辑
摘要:题目问一张无向图能否从1点走到2点再走到3点,且一个点只走一次。 思维定势思维定势。。建图关键在于,源点向2点连边,1点和3点向汇点连边! 另外,题目数据听说有点问题,出现点大于n的数据。。   阅读全文
posted @ 2016-03-12 23:36 WABoss 阅读(331) 评论(0) 推荐(0) 编辑
摘要:题目是说给一棵树,叶子结点有负权,边有正权,问最多能选多少个叶子结点,使从叶子到根的权值和小于等于0。 考虑数据规模表示出状态:dp[u][k]表示在u结点为根的子树中选择k个叶子结点的最小权值 最后就从d[1][k]中找满足的最大的k。不过单这样转移时间复杂度是指数级,显然这题就是用树上背包了。 阅读全文
posted @ 2016-03-12 21:53 WABoss 阅读(204) 评论(0) 推荐(0) 编辑
摘要:题目是要给n个重量1到n的球编号,有一些约束条件:编号A的球重量要小于编号B的重量,最后就是要输出字典序最小的从1到n各个编号的球的重量。 正向拓扑排序,取最小编号给最小编号是不行的,不举出个例子真的很难理解= =比如这个数据: 1 4 2 4 1 3 2 正确答案是2 4 3 1,会得到的错误答案 阅读全文
posted @ 2016-03-12 19:23 WABoss 阅读(270) 评论(0) 推荐(0) 编辑
摘要:题目是给一张边有向的树形图。要选出首都的点,首都要都能走到其他点,因此要反转一些边的方向。问可以选哪几个点作为首都,使它们所需反转边的数量最少。 这题挺好想的,因为做过HDU2196。 首先就不妨设正向边权值为0,反向边权值为1,那样就是各个点出发到其他点经过边所需的最少权值和。 然后对于每个点,分 阅读全文
posted @ 2016-03-12 09:45 WABoss 阅读(403) 评论(0) 推荐(0) 编辑
摘要:和LightOJ1257一样,之前我用了树分治写了。其实原来这题是道经典的树形DP,感觉这个DP不简单。。 dp[0][u]表示以u为根的子树中的结点与u的最远距离 dp[1][u]表示以u为根的子树中的结点与u的次远距离 这两个可以一遍dfs通过儿子结点转移得到。显然dp[0][u]就是u的一个可 阅读全文
posted @ 2016-03-11 22:39 WABoss 阅读(2707) 评论(0) 推荐(6) 编辑
摘要:化简一下那个方差得到:$$\sqrt\frac{(\Sigma_{i=1}^nx_i)-n\bar x^2}{n}$$ 除了$\Sigma_{i=1}^nx_i$这部分未知,其余已知,而那部分显然越大越好,很容易用DP去转移求得。 dp[n][x1][y1][x2][y2]表示当前要切的矩形是(x1 阅读全文
posted @ 2016-03-11 17:22 WABoss 阅读(240) 评论(0) 推荐(0) 编辑
摘要:题目要输出一个序列各个长度k的连续子序列的最大值最小值。 多次RMQ的算法也是能过的,不过单调队列O(n)。 这题,队列存元素值以及元素下标,队尾出队维护单调性然后入队,队首出队保持新元素下标与队首元素下标差小于k。 以前写的还是3个if-else,重写了下。。不加输出挂会T。。 1 #includ 阅读全文
posted @ 2016-03-09 20:44 WABoss 阅读(179) 评论(0) 推荐(0) 编辑
摘要:题目大概是给几个DNA片段,求构造一个长度n的字符串的方案数,要求这个字符串每个位置的字符都属于某个包含于此字符串的DNA片段。 把那些DNA片段建一个AC自动机。考虑状态的表示: dp[len][x][k]表示长度len且后缀状态为自动机结点x且后k位还不满足要求的方案数 然后转移就是向自动机上四 阅读全文
posted @ 2016-03-08 19:26 WABoss 阅读(519) 评论(0) 推荐(0) 编辑
摘要:题目是区间逆序数查询。 莫队算法。。左或右区间向左或右延伸时加或减这个区间小于或大于新数的数的个数,这个个数用树状数组来统计,我用线段树超时了。询问个数和数字个数都记为n,数字范围不确定所以离散化,这样时间复杂度就是$O(n^{\frac32}\log{n})$ 1 #include<cstdio> 阅读全文
posted @ 2016-03-08 10:47 WABoss 阅读(203) 评论(0) 推荐(0) 编辑
摘要:和BZOJ2038差不多。。复习一下。 1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> 4 using namespace std; 5 int block; 6 struct Query{ 7 int i,l,r; 8 bool 阅读全文
posted @ 2016-03-07 22:55 WABoss 阅读(207) 评论(0) 推荐(0) 编辑
摘要:题目求两个字符串s1,s2不同的LCS个数。 经典的求LCS的DP是这样的: LCS[i][j]表示s1[0...i]和s2[0...j]的LCS LCS[i][j]从LCS[i-1][j-1]+1(s1[i]==s2[j])或max(LCS[i-1][j],LCS[i][j-1])(s1[i]!= 阅读全文
posted @ 2016-03-06 20:28 WABoss 阅读(210) 评论(0) 推荐(0) 编辑
摘要:题目大概是,一个数轴上n个线段,每个线段都有起始坐标、长度和权值,问从中取出没有公共交点的线段的最大权和。 取k次是个经典的最小费用最大流问题,不过这题建容量网络有20W个点,离散化最多也要6W个点,跑不动最小费用最大流的样子。。 其实这题也是个经典的DP,区间图最大权独立集问题,《挑战程序设计竞赛 阅读全文
posted @ 2016-03-06 12:28 WABoss 阅读(237) 评论(0) 推荐(0) 编辑
摘要:题目给一棵树,边带有权值,求每一点到其他点路径上的最大权和。 树上任意两点的路径都可以看成是经过某棵子树根的路径,即路径权=两个点到根路径权的和,于是果断树分治。 对于每次分治的子树,计算其所有结点到根的距离;对于每个结点,找到另一个离根最远的且与该结点路径过根的结点,二者的距离和就是这个点在过这棵 阅读全文
posted @ 2016-03-05 23:07 WABoss 阅读(583) 评论(0) 推荐(0) 编辑
摘要:给一个L*C字符矩阵和W个字符串,问那些字符串出现在矩阵的位置,横竖斜八个向。 就是个多模式匹配的问题,直接AC自动机搞了,枚举字符矩阵八个方向的所有字符串构成主串,然后在W个模式串构造的AC自动机上跑。 另外,temp指针的那个找遗漏后缀的过程执行时标记一下,下一次再到这个结点就不需要再进行一次t 阅读全文
posted @ 2016-03-05 12:07 WABoss 阅读(329) 评论(0) 推荐(0) 编辑
摘要:题意:给一个串,串的第一个字符比后面的都大,要把它分成三段,然后反转每一段,求能得到的字典序最小的串是什么。 首先,第一段是可以确定的:把原串反转,因为第一个字符是最大的,它是唯一的,不存在反转串的后缀之间有包含关系,所以取最小的后缀这就是第一段的字符串; 然后后面两段,如果确定分割位置可以发现这两 阅读全文
posted @ 2016-03-04 20:50 WABoss 阅读(325) 评论(0) 推荐(0) 编辑
摘要:题目大概是给一张有向图,有n张票,每张票只能使用一次,使用一张票就能用pi匹马拉着走过图上的一条边,走过去花的时间是边权/pi,问从a点走到b点的最少时间是多少。 用dp[u][S]表示当前在u点且用过的票集合是S的最少时间,丢进SPFA更新。 1 #include<cstdio> 2 #inclu 阅读全文
posted @ 2016-03-01 23:04 WABoss 阅读(191) 评论(0) 推荐(0) 编辑
摘要:题目大概就是给一个序列,问每个数右边有几个连续且小于该数的数。 用单调递减栈搞搞就是了。 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 #define INF (1<<30) 5 #define MAXN 88888 阅读全文
posted @ 2016-03-01 21:14 WABoss 阅读(220) 评论(0) 推荐(0) 编辑
摘要:题目给一个01矩阵,求最大的1子矩阵。 先用dp预处理出每一行的每一列的1能向上按连续的1延伸多少,然后枚举每一行作为子矩阵的底,那样对于每一行的答案就是POJ2559这个经典问题了。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorit 阅读全文
posted @ 2016-03-01 19:16 WABoss 阅读(221) 评论(0) 推荐(0) 编辑
摘要:题目给一棵边带权的树,统计路径长度<=k的点对数。 楼教主男人八题之一,分治算法在树上的应用。 一开始看论文看不懂,以为重心和距离那些是一遍预处理得来的。。感觉上不敢想每棵子树都求一遍重心和距离——那样时间复杂度怎么会只有O(nlogn)? 后来想通了,真的是对于每颗子树都把其所有结点单独提取出来, 阅读全文
posted @ 2016-03-01 09:58 WABoss 阅读(421) 评论(0) 推荐(0) 编辑