
DP
文章平均质量分 68
YihAN_Z
ただのあほです
展开
-
洛谷P1156 垃圾陷阱 背包DP
题目大意:一头牛被困在一个初始为空的垃圾坑里,之后会扔下一些垃圾。每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费时间。这头牛开始时有足够持续10小时的能量,给定一些垃圾扔下的时间、高度与吃掉能提供的能量,输出最早什么时候可以爬出;否则输出最长存活时间。对于一个垃圾有两种选择:吃掉或堆积。可以想到是类似背包问题。吃掉垃圾能延长存活时间,堆积垃圾可以增加高度,而答案输出的是达到一定高度的时间,所以设计原创 2016-08-07 12:24:05 · 1667 阅读 · 0 评论 -
BZOJ 4720 [Noip2016]换教室 期望DP
题目大意:现有v个点和e条边。在n个时刻中,某个时刻i应该前往c[i],可以申请前往d[i],有p[i]的几率成功,每个时刻只能申请一次,最多申请m次。问如何分配申请使得期望经过的边权最小。 v<=300,n,m<=2000原创 2017-06-22 15:10:10 · 433 阅读 · 0 评论 -
BZOJ 3037 创世纪 树形DP
#include <cstdio>#include <cstring>#include <algorithm>#define N 1000005#define INF 1000000000using namespace std;struct Edge { int from,to,nxt; Edge() {} Edge(int _from,int _to,int _原创 2017-06-30 11:39:00 · 569 阅读 · 0 评论 -
JZOJ 1217 软件开发 二分+DP
ProblemDescription一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术人员分工完成,每个技术人员完成同一软件的不同模块的所用的天数是相同的,并且是已知的,但完成不同软件的一个模块的时间是不同的,每个技术人员在同一时刻只能做一个模块,一个模块只能由一个人独立完成而不能由多人协同完成。一个技术人员在整个开发期内原创 2016-08-08 21:00:19 · 655 阅读 · 0 评论 -
BZOJ 2595 [Wc2008]游览计划 SPFA+斯坦纳树 or 插头DP
题目大意:有n*m的方格,每个格子有一个非负权值v(i,j),现要求选出若干个格子,使得权值为0的格子联通且选出格子的数字和尽量小。SPFA算法的优化及应用中的P20,3.2在一类状态转移阶段性不明显的动态规划中的应用。这里暂不介绍插头DP的做法。#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#d原创 2017-03-08 18:51:26 · 431 阅读 · 0 评论 -
BZOJ 3238 [Ahoi2013]差异 后缀自动机
题目大意: len(Ti)+len(Tj)枚举一下就好,主要是如何算sigma{lcp(Ti,Tj)}将原串反过来建后缀自动机,两个节点的lca即最长子串就是这两个节点代表的串的lcp于是枚举、DP一下即可#include <cstdio>#include <algorithm>#include <cstring>#define N 500005using namespace std;t原创 2017-04-10 15:13:46 · 449 阅读 · 0 评论 -
BZOJ 1010 [HNOI2008]玩具装箱toy 斜率优化
设状态f(i)表示将前i个玩具装箱后的最小费用,sum(i)表示前i个玩具的长度(c值)和 易得状态转移方程 其中 0 < j < i 为了简化式子,记 将上式代入,开方1 则对于所有可能的 记2 将上式移项后代入,得到 现在要使b最小,k不变,若固定x,则y越小,b越小,所以维护一个下凸壳。 可以看出x与查询斜率k均单调递增,维护一个有关斜率的单调队列即可。#inclu原创 2017-03-23 21:52:27 · 680 阅读 · 1 评论 -
BZOJ 1026 [SCOI2009]windy数 数位DP
题目大意:求在[l,r]中不含前导零且相邻两个数字之差至少为2的正整数的个数数位DP 我的代码写的这么有道理自己慢慢看吧#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int DP(int x) { if(!x) return 0; char s[50]; sprin原创 2017-03-08 14:35:37 · 384 阅读 · 1 评论 -
BZOJ 1512 [POI2006]Pro-Professor Szu Tarjan强连通分量 DP
题目大意:给定一张n个点,m条边的图(可能有(自)环),给出一个终点,求出到终点方案数最大的所有点。求到终点的方案的问题,可以想到转化成将边反向以后求终点到所有点的方案。题中说到可能有环,那就用Tarjan算一下强连通分量缩点。对于每一个size>1的点都存在INF条路径。将图转化为DAG后就可以用DP来解决计算方案数的问题。详见代码。#include <cstdio>#include <algo原创 2017-02-21 20:50:24 · 702 阅读 · 0 评论 -
BZOJ 1030 [JSOI2007] 文本生成器 AC自动机+DP
题目大意:给出n个模式串,给定m,表示将会随机生成长度为m的串,求出随机生成的串中,包含模式串的串的个数%10007的值若直接求包含模式串的串的个数,DP状态不好转移(可能在串的任意位置出现模式串,可能出现多个模式串,不方便统计方案数)。所以可以利用补集的思想,用总数减去不包含的串的个数即为答案。这样就方便设计状态了。设状态f(i,j)表示在自动机中的i号结点匹配了长度为j的串仍为出现模式串的方案数原创 2017-01-17 10:57:52 · 313 阅读 · 0 评论 -
BZOJ 1212 [HNOI2004] L语言 AC自动机+DP
题目大意:给出n个模式串,接着给出m个主串,求每个主串中的一个最长前缀使得其能被分割成若干个模式串。Trie树上暴力时间复杂度O(1M*10*20),过亿应该就很卡了吧…但是也能过,不过写AC自动机稳一点吧。设状态f(i)为长度为i的前缀是否能通过几个模式串表示出来。模式串建成AC自动机,结点上记录这个串的长度,用主串在上面跑,若匹配到了一个长度为j的串,则f(i) |= f(i-j).需要注意的是原创 2017-01-17 09:18:55 · 505 阅读 · 0 评论 -
BZOJ 3622 已经没有什么好害怕的了 DP 容斥原理
题目大意:给出长度为n的a,b两个序列,元素互不相同。求有多少种匹配满足ai>bi比ai< bi多m对。将问题转化一下,即求有多少种匹配其中ai>bi恰好为(n+m)/2,其余均为ai< bi。 若设状态为f(i,j)表示a序列中前i个元素匹配完恰好有j对为ai>bi,发现根本没法转移。看到计数问题可以考虑容斥。需要将状态设置得便于转移,将状态改为f(i,j)表示a序列中前i个元素至少匹配了j对满原创 2017-04-11 19:52:03 · 443 阅读 · 0 评论