
=======动态规划=======
文章平均质量分 84
詹明捷
此博客停止更新,迁移至www.zhanmingjie.com
展开
-
poj 1742 Coins 多重背包变形
传说中的男人八题,是男人就A这八题。有n种面额的硬币,面额个数分别为A_i、C_i,求最多能搭配出几种不超过m的金额?这是一个多重部分和问题(多重背包问题),放在了《2.3 记录结果再利用的“动态规划” 优化递推关系式》。最基本的做法是:dp[i][j] := 用前i种硬币能否凑成j递推关系式:dp[i][j] = (存在k使得dp[i - 1][j -原创 2014-11-15 10:46:29 · 1187 阅读 · 0 评论 -
求一个最长的串使得该串不包含任何禁止串为子串 AC自动机+DP +dfs判环 UVA 1399 - Puzzle
题目链接题意:给定K和N,表示有K种不同的字符,N个禁止串,求一个最长的串使得该串不包含任何禁止串为子串。如果存在循环或者不能构成的话,输出No。思路:建ACM自动机,把不可走结点标记构造出来,然后在这个状态图上进行dp找出最长路径即可,至于无限长的情况,只要在dp前进行一次dfs判有没有环即可代码:#include #include #include原创 2015-10-03 15:58:43 · 779 阅读 · 0 评论 -
表情匹配总数 DP SRM 671 div1 300 BearCries
题意:给定一个长度为N(N的字符串 字符串中只含有”;”和”_“两种字符 一个合法的Cry表情为两个”;”中间含有至少一个”_“一个合法Cry表情为字符串的一个子串(不必在原串中连续)求题目中给出的字符串分解成若干个合法Cry表情的方案数(原字符串中的每个字符都必须出现在某个Cry表情中并且只能出现一次)题解:问题可以由dp解决问题可以由dp解决我们考虑状态f[原创 2015-11-03 19:46:57 · 664 阅读 · 0 评论 -
N排列盒子涂色方法总和 DP SRM 666 div1 medium SumOverPermutations
SumOverPermutationshttp://community.topcoder.com/stat?c=problem_statement&pm=13764&rd=16515题意:有个奇葩,组合数学很渣,老师问他:无限个n种颜色的球放在n个有顺序的盒子中,每个盒子放一个,相邻盒子的球的颜色不同,有多少种方法。这个奇葩给了个奇葩的解答,他说这和放的顺序有关,比如有三个原创 2015-09-10 21:29:24 · 956 阅读 · 0 评论 -
AC自动机+DP 改变字符串中的‘?’使得在字典中匹配到的次数最多 codechef Lucy and Question Marks
the best way to restore is to replace all the question marks by latin letters in such a way that the total sum of occurrences of all the strings from her dictionary in it is maximal.原创 2015-08-19 16:21:18 · 1140 阅读 · 0 评论 -
DP SRM 661 Div2 Hard: ColorfulLineGraphsDiv2
Problem StatementBob is going to create a graph with N nodes. The graph will be constructed in two steps. First, Bob will take N isolated vertices, label them 1 through N and color each of them us原创 2015-07-26 21:16:11 · 947 阅读 · 0 评论 -
HDU 4472 Count
题目原创 2014-10-19 17:08:14 · 689 阅读 · 0 评论 -
POJ 3046 Ant Counting(“动态规划” 优化递推关系式)
http://poj.org/problem?id=3046蚂蚁牙黑,蚂蚁牙红:有A只蚂蚁,来自T个家族。同一个家族的蚂蚁长得一样,但是不同家族的蚂蚁牙齿颜色不同。任取n只蚂蚁(S这是《2.3 记录结果再利用的“动态规划” 优化递推关系式》练习题的第二题。定义 dp[i][j] := 使用前i个家族可以配出来“元素个数为j”的集合的个数。那么dp原创 2014-11-15 14:51:25 · 1377 阅读 · 0 评论 -
POJ 3181 Dollar Dayz (完全背包)
http://poj.org/problem?id=3181Dollar DayzTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 2275Accepted: 934DescriptionFarmer John goes to Doll原创 2014-11-15 19:33:22 · 1043 阅读 · 0 评论 -
POJ 2229 Sumsets (递推&整数划分变形)
http://poj.org/problem?id=2229思路:假设加数按从小到大的顺序。当n为奇数时,第一个数必须为1,此时f(n)=f(n-1);当n为偶数时,分两种情况讨论,若第一个数为1,则f(n)=f(n-1),若第一个数不为奇数,则所有数都不为奇数,提出一个公因子2出来,就是f(n/2),所以,f(n)=f(n-1)+f(n/2)完整代码:/*63原创 2014-11-14 16:29:18 · 1137 阅读 · 0 评论 -
POJ 3616 Milking Time 动态规划
http://poj.org/problem?id=3616题意:一个奶牛在0~N时间段内可被取奶,每次挤奶以后必须休息至少R分钟才能下次继续挤奶。有M次可以挤奶的时间段,每次取奶对应三个值:开始时间、结束时间、效率值,每次挤奶的过程不能中断。求出最大效率值。解法:首先按照结束时间从小到大排序(按照结束时间排序方便后边的dp);dp[i]表示第i个挤奶时间段后,效率最大值。转移原创 2014-11-14 16:24:19 · 941 阅读 · 0 评论 -
poj 3280 Cheapest Palindrome (DP)
题意:有一个由n个小写字母组成的,长度为m的字符串,可以对其通过增加字符或者删除字符来使其变成回文。而增加或者删除字符都有一个花费,求解使该字符串变成回文的最小花费。 思路:DP。dp[i][j]表示串str[i~j]变成回文的最小代价,故状态转移方程为:当str[i] == str[j]时 dp[i][j] = dp[i+1][j-1];当str[i] != str[原创 2014-11-14 21:22:18 · 874 阅读 · 0 评论 -
POJ 3176 Cow Bowling (简单DP)
Cow Bowlinghttp://poj.org/problem?id=3176Time Limit: 1000MSMemory Limit: 65536KDescriptionThe cows don't use actual bowling balls when they go bowling. They each ta原创 2014-11-14 16:36:56 · 895 阅读 · 0 评论 -
poj 2385 Apple Catching DP
http://poj.org/problem?id=2385状态定义: dp[i][j] :=前i秒,移动j次接到的最大苹果数量。状态转移: dp[i][j]=dp[i-1][j]+num[0][i]; (j==0) dp[i][j]=max{dp[i-1][j-1],dp[i-1][j]}+num[j%2==1][i]; (1=原创 2014-11-14 12:54:42 · 994 阅读 · 0 评论 -
找出s的子串中字典序第k小的“半回文串” Trie Codeforce Div. 2 Ann and Half-Palindrome
题意找出s的子串中字典序第k小的“半回文串”,给出半回文串定义是:对于任意i思路这用dp推下就可以了,dp[i][j]表从i到j是否是回文串 则dp[i][j] = dp[i+2][j-2](j-i>=4),其他的都是奇回文串; 要输出第k个字典序的子串,首先肯定想到要用字典树输出来就是了,很简单的dfs就可以了。插入串的时候,就不要一个一个插了,而直接插一个后缀就可以了这样总原创 2015-10-07 18:18:49 · 1227 阅读 · 0 评论