随笔分类 - 动态规划(DP)
BZOJ 1444 [Jsoi2009]有趣的游戏 (AC自动机 + 概率DP + Gauss)
摘要:1444: [Jsoi2009]有趣的游戏 Description Input 注意 是0<=P 注意 是0<=P Output Sample Input Sample Output HINT 30%的数据保证, n ≤ 2. 50%的数据保证, n ≤ 5. 100%的数据保证, n , l, m
阅读全文
UVaLive 3490 Generator (KMP + DP + Gauss)
摘要:题意:随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度。 析:由于只要包含目标串就可以停止,所以可以先把这个串进行处理,也就是KMP,然后dp[i] 表示从 i 结点到完全匹配期望长度,所以很容易得到状态转移方程 dp[i] = ∑dp[j]
阅读全文
BZOJ 1030 [JSOI2007]文本生成器 (AC自动机 + DP)
摘要:1030: [JSOI2007]文本生成器 Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版。该软件可以随机生成一些文章―――总是生成一篇长度固定且完全随机的文章—— 也就是说,生成的文
阅读全文
BZOJ 1026 [SCOI2009]windy数 (数位DP)
摘要:1026: [SCOI2009]windy数 Description windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数? windy定义了一种windy数。不含前导零且相邻两个数字
阅读全文
BZOJ 1087 [SCOI2005]互不侵犯King (状压DP)
摘要:1087: [SCOI2005]互不侵犯King Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻
阅读全文
BZOJ 1010 [HNOI2008]玩具装箱toy (斜率优化DP)
摘要:1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中。P教授有编号为1...N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci
阅读全文
BZOJ 1009 [HNOI2008]GT考试 (KMP + 矩阵快速幂)
摘要:1009: [HNOI2008]GT考试 Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。他的不吉利数学A1A2...Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2
阅读全文
BZOJ 1003 物流运输 (dp + dijkstra)
摘要:1003: [ZJOI2006]物流运输 Description 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装
阅读全文
51Nod 1376 最长递增子序列的数量 (DP+BIT)
摘要:题意:略。 析:dp[i] 表示以第 i 个数结尾的LIS的长度和数量,状态方程很好转移,先说长度 dp[i] = max { dp[j] + 1 | a[i] > a[j] && j < i },然后是数量,dp[i] = sigma(dp[j]) if dp[i] == dp[j] + 1。 如
阅读全文
UVa 11280 Flying to Fredericton (DP + Dijkstra)
摘要:题意:给出n(2<=n<=100)个城市之间的m(0<=m<=1000)条航线以及对应的机票价格,要求回答一些询问,每个询问是给出最大停留次数S,求从其实城市Calgary到终点城市Fredericton中途停留次数不超过s的最便宜的路程。 析:注意这个题是单向路,我还以为是双向的,dp[i][j]
阅读全文
UVa 11367 Full Tank? (DP + Dijkstra)
摘要:题意:n个城市有m条道路。每个城市的油价不一样,给出起点s和终点t,以及汽车的油箱的容量,求从城市s到城市 t 的最便宜路径。 析:dp[u][i] 表示在第 u 个城市,还剩下 i L升油,一开始用BFS,TLE,要注意效率,用dijkstra,找到城市 t 就该结束了。 代码如下:
阅读全文
UVa 10269 Adventure of Super Mario (Floyd + DP + BFS)
摘要:题意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径。但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄。这种工具有k个,每个只能使用一次,并且在城市内部不可使用,但在村庄内部可使用。另外,在城市或村庄内部的时间不计。 析:先预处理出来使用工具能到达的距离,这个可以用
阅读全文
HDU 3247 Resource Archiver (AC自动机+BFS+状压DP)
摘要:题意:给定 n 个文本串,m个病毒串,文本串重叠部分可以合并,但合并后不能含有病毒串,问所有文本串合并后最短多长。 析:先把所有的文本串和病毒都插入到AC自动机上,不过标记不一样,可以给病毒标记-1,如果访问知道就知道不可行的,然后处理出两两串叠加的最小长度,这个要用bfs,在AC自动机上把这个处理
阅读全文
HDU 4632 Palindrome subsequence (区间DP)
摘要:题意:给定一个字符串,问它的集合中有多少个回文串。 析:dp[i][j] 表示区间 i 到 j,有多少个回文串, 如果 s[i] == s[j] dp[i][j] = dp[i+1][j] + dp[i][j-1] + 1。 否则 dp[i][j] = dp[i+1][j] + dp[i][j-1]
阅读全文
HDU 5956 The Elder (树上斜率DP)
摘要:题意:给定上一棵树,然后每条边有一个权值,然后每个点到 1 的距离有两种,第一种是直接回到1,花费是 dist(1, i)^2,还有另一种是先到另一个点 j,然后两从 j 向1走,当然 j 也可以再向 k,一直到1,但经过一个点,那么就会出多一个花费 p,问你每个点到 1 的最小距离的最大值是多少。
阅读全文
HDU 3341 Lost's revenge (AC自动机+DP)
摘要:题意:给定 n 个子串,然后给一个母串,让你对母串重排,然后问你最多含有多少个字串。 析:这个题很容易想到五维DP,这样的话,不但会MLE,而且连数组都不一定开的出来,里面有大量的无用的状态,所以我们把那四个字符出现的次数进行重新编制,假设A出现 a 次,C出现 c 次,G出现 g 次,T出现 t
阅读全文
HDU 3681 Prison Break (二分 + bfs + TSP)
摘要:题意:给定上一个 n * m的矩阵,你的出发点是 F,你初始有一个电量,每走一步就会少1,如果遇到G,那么就会加满,每个G只能第一次使用,问你把所有的Y都经过,初始电量最少是多少。 析:首先先预处理每个F,G,Y的最短距离,用 bfs 可以实现,然后再二分电量,进行判断,在进行判断时,dp[s][i
阅读全文
HDU 4562 守护雅典娜 (计算几何+DP)
摘要:守护雅典娜 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 740 Accepted Submission(s): 250 Problem Des
阅读全文
UVa 10559 Blocks (DP)
摘要:题意:一排带有颜色的砖块,每一个可以消除相同颜色的砖块,,每一次可以到块数k的平方分数。求最大分数是多少。 析:dp[i][j][k] 表示消除 i ~ j,并且右边再拼上 k 个 颜色等于a[j] 的方块所以得到的新序列的最大得分,也就是说那 k 个是来自右边,我们已经消除了它们之间的其他方块才得
阅读全文