
线性dp
TIMELIMITE
Time is not enough. I must hurry up !
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode 139 单词拆分 一维dp
// dp[i]表示1到i是否能拼成 // dp[i] = dp[i] | dp[j] if (j, i)能找到单词匹配 class Solution { public: bool wordBreak(string s, vector<string>& wordDict) { int n = s.length(); vector<bool> dp(n + 1); dp[0] = true; for (.原创 2022-04-10 10:18:58 · 182 阅读 · 0 评论 -
uva live 4731 Cellular Network 线性dp
// uva live 4731 // // 状态很好想: // d(i,j)表示前i个网络分为j组所得到的数学期望的最小值 // 转移方程: // d(i,j) = min(d(k,j-1)+cost); // cost由题目给出的条件可知cost = (k+1...i)段的概率和 * i; // // 注意: // 1)肯定概率大的网络分在前面,这样在后面的话,这个大的概率出现在 // 后面的原创 2015-06-18 14:27:26 · 884 阅读 · 0 评论 -
la 3983 Robotruck 线性dp
// la 3983 Robotruck // 题目大意: // // 有n个垃圾,第i个垃圾的坐标是(x,y),重量为wi,有一个机器人,要按照编号从小 // 到大的顺序捡起所有的垃圾并扔进垃圾桶(垃圾桶在原点(0,0))。机器人可以捡起几 // 个垃圾以后一起扔掉,但任何时候其手中的总重量不能超过最大载重C,两点间的距 // 离为曼哈顿距离。求机器人行走的最短距离 // // n的范围 1原创 2015-05-31 22:49:37 · 645 阅读 · 0 评论 -
uva 11584 Partitioning by Palindromes 线性dp
// uva 11584 Partitioning by Palindromes 线性dp // // 题目意思是将一个字符串划分成尽量少的回文串 // // f[i]表示前i个字符能化成最少的回文串的数目 // // f[i] = min(f[i],f[j-1] + 1(j到i是回文串)) // // 这道题还是挺简单的,继续练 #include #include #include #i原创 2015-06-03 21:26:01 · 800 阅读 · 0 评论 -
LA 4256 Salesmen 线性dp
// LA 4256 Salesmen 线性dp // // 像LCS和LIS问题类似,因为每次修改一个值,都是根据 // 前一个值决定的,那么最后一个结尾的数字肯定要作为 // 状态,而长度作为状态是一目了然的 // // d[i][j]表示长度为i,最后以j结尾的数组修改的最小次数 // // 则状态转移方程为 // // d[i][j] = min(d[i][j],d[i-1][k]+(j原创 2015-06-03 22:34:22 · 566 阅读 · 0 评论 -
uva 11552 Fewest Flops 线性dp
// uva 11552 Fewest Flops // // 二维线性dp // // 首先,块内肯定是相同的字母放在一起,先记录下每个块内有多少种字母 // 记作counts[i]; // // 令f[i][j]表示前i个块以字母j为结尾的最小分块数 // // 如果第i块的开始字母与第i-1块的结束字母相同 // f[i][j] = min(f[i][j],f[i-1][k] + coun原创 2015-06-11 21:56:10 · 714 阅读 · 0 评论