上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 23 下一页
摘要: 题目是给一张边有向的树形图。要选出首都的点,首都要都能走到其他点,因此要反转一些边的方向。问可以选哪几个点作为首都,使它们所需反转边的数量最少。 这题挺好想的,因为做过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 阅读(2687) 评论(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 阅读(239) 评论(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 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 题目是区间逆序数查询。 莫队算法。。左或右区间向左或右延伸时加或减这个区间小于或大于新数的数的个数,这个个数用树状数组来统计,我用线段树超时了。询问个数和数字个数都记为n,数字范围不确定所以离散化,这样时间复杂度就是$O(n^{\frac32}\log{n})$ 1 #include<cstdio> 阅读全文
posted @ 2016-03-08 10:47 WABoss 阅读(202) 评论(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 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 题目给一棵树,边带有权值,求每一点到其他点路径上的最大权和。 树上任意两点的路径都可以看成是经过某棵子树根的路径,即路径权=两个点到根路径权的和,于是果断树分治。 对于每次分治的子树,计算其所有结点到根的距离;对于每个结点,找到另一个离根最远的且与该结点路径过根的结点,二者的距离和就是这个点在过这棵 阅读全文
posted @ 2016-03-05 23:07 WABoss 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 给一个L*C字符矩阵和W个字符串,问那些字符串出现在矩阵的位置,横竖斜八个向。 就是个多模式匹配的问题,直接AC自动机搞了,枚举字符矩阵八个方向的所有字符串构成主串,然后在W个模式串构造的AC自动机上跑。 另外,temp指针的那个找遗漏后缀的过程执行时标记一下,下一次再到这个结点就不需要再进行一次t 阅读全文
posted @ 2016-03-05 12:07 WABoss 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个串,串的第一个字符比后面的都大,要把它分成三段,然后反转每一段,求能得到的字典序最小的串是什么。 首先,第一段是可以确定的:把原串反转,因为第一个字符是最大的,它是唯一的,不存在反转串的后缀之间有包含关系,所以取最小的后缀这就是第一段的字符串; 然后后面两段,如果确定分割位置可以发现这两 阅读全文
posted @ 2016-03-04 20:50 WABoss 阅读(323) 评论(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 阅读(190) 评论(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 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题目给一个01矩阵,求最大的1子矩阵。 先用dp预处理出每一行的每一列的1能向上按连续的1延伸多少,然后枚举每一行作为子矩阵的底,那样对于每一行的答案就是POJ2559这个经典问题了。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorit 阅读全文
posted @ 2016-03-01 19:16 WABoss 阅读(220) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 23 下一页