dp
Mima_Reincarnation
这个作者很懒,什么都没留下…
展开
-
BZOJ4200: [Noi2015]小园丁与老司机 最小流
题意:平面上有N(N<=50000)个点,从原点出发,每次可以走上、左、右、左上45度、右上45度五种方向,只有碰到一个未走过的点才能停止,求: 1.最多走多少点 2.输出一种方案 3.对于所有最优方案,只保留上、左上、右上的边,求最少条数的路径将所有边都覆盖 同一y坐标的点不超过1000个 前两问DP一下即可,将所有点按y为一关键字x为二关键字排序,然后对于每一行的每个点,枚举是从这行之原创 2017-04-10 19:07:30 · 1385 阅读 · 0 评论 -
BZOJ4197: [Noi2015]寿司晚宴 状压DP
题意:把2~n这些数分成两个可空集合,要求两个集合中任取一对数都必须互质,求方案数 2≤n≤500 比较显然的是可以把每个数分解质因数,相当于两个集合中不能存在同一质因数。 但是质因数个数可能很多,并不好设状态。 注意到每个数中最多只有一个大于等于根号n的质因子,而小于根号n的质数只有8个,那么将所有数按照大质因子分类,规定每一类最多只能被一个集合选,就可以把前八个质数状压来表示状态了。原创 2017-04-11 13:54:11 · 481 阅读 · 0 评论 -
BZOJ3622: 已经没有什么好害怕的了 DP
题意:有N个糖果,N个药片,每个糖果和药片都有权值,求所有的两两配对方案中,糖 > 药的组数比药 >糖的组数多k组的方案数。n<=2000,保证所有权值不相同。 将问题转化为求糖 > 药的组数正好(n+k)/2组的方案数,若不是整数则显然为0。由于与顺序无关,所以可以先对两组数据排序。 接下来考虑如何设计状态。 排完序后,容易预处理出每一个糖果大于多少个药片(记为cnt[i])。设f[i][j原创 2017-01-03 17:12:55 · 415 阅读 · 0 评论 -
BZOJ3864: Hero meet devil DP套DP
题意:给出字符串S,对于每一个i,问有多少个长度为m的字符串与S的最长公共子序列长度为i |S|<=15. m<= 1000. DP的瓶颈在于如果考虑保存LCP长度或者结束位置的话,会存在状态相同的串而转移方式不同。为了消除后效性,需要将最后一位与S所有位的匹配状态都记录下来。 考虑LCP的转移方程: f[i][j]=f[i-1][j-1]+1 (i==j); 或 f[i][j]=max(f原创 2017-04-11 16:36:53 · 656 阅读 · 2 评论 -
BZOJ4543: [POI2014]Hotel加强版 长链剖分
给一个树,问有多少三元组满足两两距离相等。n<=100000 长链剖分应用之一:o(n)统计以深度为下标的可合并子树信息 在当前节点,令f(i)表示相对深度为i的节点个数,g(i)表示在子树外离当前点距离为i的点可以和子树内多少对点组成答案。 每次新来一个儿子,枚举长度,用当前g和儿子f以及当前f和儿子g更新一遍答案,然后用两边的f来更新g,再将儿子的f和g推入当前f和g。注意顺序问题。原创 2017-04-11 17:42:01 · 1561 阅读 · 0 评论 -
BZOJ4897: [Thu Summer Camp2016]成绩单 DP
题意:http://www.lydsy.com/JudgeOnline/problem.php?id=4897 首先每一次取的代价是相互独立的,其次考虑对于值域相同的一段,拿走它的代价是一定的,所以凡是值域相同的一段都可以同等看待。那么可以设f[i][j][k][l]表示i到j,剩下的数值域是k到l的最小代价,注意不一定要把所有k到l内的数都剩下。转移时对于一个区间,枚举一个要扩张到的端点,把中间原创 2017-05-26 21:04:36 · 822 阅读 · 0 评论 -
BZOJ4584: [Apio2016]赛艇 DP
题意:长度为N的序列,每个元素可以在[ai,bi]间取值或者不取值,求有多少种不同的上升序列(不能都不取值) N<=500,元素范围1e9 容易发现取值只会形成2*n个区间,每个元素可以在某几段区间内任意取值 记F[i][j][k]表示前i个元素,最后一段落在j这个区间,这个区间一共落了k个元素的方案数 考虑转移,如果一个区间之前已经有k-1个,现在要加一个,由于取值是任意的,所以相当于把(原创 2017-04-27 20:39:12 · 678 阅读 · 0 评论 -
BZOJ4384: [POI2015]Trzy wieże 记忆化搜索
http://www.lydsy.com/JudgeOnline/problem.php?id=4384 dp数组表示的是当前有两个数量相等,末尾字符是这两个中的一个且与它前面的字符不等,第三种的数量比这两个少1的情况。主要是基本相同的代码抄三遍所以看着比较长。。。时间复杂度o(n)。#include<cstdio>#include<algorithm>#define gm 1000005u原创 2017-06-28 21:16:47 · 1066 阅读 · 0 评论