POJ 3230 DP】的更多相关文章

f[i][j]=max(f[i][j],f[i-1][k]-a[k][j]+b[i][j]) i->第i天 j-–>到第j个城市 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int f[105][105],a[105][105],b[105][105],n,m,maxx; int main() { while(scanf("%d%d&q…
Description One traveler travels among cities. He has to pay for this while he can get some incomes. Now there are n cities, and the traveler has m days for traveling. Everyday he may go to another city or stay there and pay some money. When he come…
题意: 某货旅行,在n个城市呆m天. 给出从第i个城市到第j个城市的路费,或者留在某个城市的生活费. 给出在第i天在第j个城市的收益. 可以在城市之间任意穿梭逗留没有其他特殊要求. 求收益最大是多少. 思路: dp[i][j]代表这货在第i天在第j个城市的最大收益. 然后状态转移方程是dp[i][j]=max(dp[i-1][1..n]+枚举目标城市计算收益)[这里少写了目标城市的那层循环,一共三层循环] #include<stdio.h> #include<string.h> #…
题目 以前做过的一道题, 今天又加了一种方法 整理了一下..... 题意:给出一个字符串,问要将这个字符串变成回文串要添加最少几个字符. 方法一: 将该字符串与其反转求一次LCS,然后所求就是n减去 最长公共子串的长度. 额,,这个思路还是不是很好想. LCS: #include<iostream> #include<cstring> #include<cstdio> using namespace std; +; char s1[maxn], s2[maxn]; ][…
题目链接:http://poj.org/problem?id=1080 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; ; const int INF = 0x3f3f3f; int dp[maxn][maxn]; int A[maxn],B[maxn]; ][] = { {, , , , , }, {,,-,-,-,…
题目链接:http://poj.org/problem?id=1609 #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> #include <queue> #include <vector> using namespace std; ; ; const int INF = 0x3f3f…
题目链接: http://poj.org/problem?id=1037 分析: 很有分量的一道DP题!!! (参考于:http://blog.csdn.net/sj13051180/article/details/6669737 ) #include <iostream> #include <cstdio> #include <cmath> #include <cstdlib> #include <string> #include <cs…
题意:从 n个人里面找到m个人  每个人有两个值  d   p     满足在abs(sum(d)-sum(p)) 最小的前提下sum(d)+sum(p)最大 思路:dp[i][j]  i个人中  和是 j       运用背包的思想  二维背包 i是人数容量,人数要符合背包思想,每次只插入一个,逆序枚举 j是sum(d)+sum(p) 注意:这题的标准解法有误:https://blog.csdn.net/lyy289065406/article/details/6671105 这是有误的解法…
转自:http://www.cnblogs.com/kuangbin/archive/2011/11/12/2246407.html [题目大意] 一条公路上有n个旅馆,选出其中k个设置仓库,一个仓库可服务若干个旅馆,一个旅馆只需一个仓库服务.问在哪几个旅馆设置仓库,每个仓库服务哪些旅馆,可使得旅馆到仓库的总距离最小,并求出总距离(长理只要求求最后一步). 链接:点我 [数据范围] 1 <= n <= 200, 1 <= k <= 30, k <= n [解题思想] 1.此题…
题意:给你一个长度为n的数列,你需要把这个数列分成几段,每段的和不超过m,问各段的最大值之和的最小值是多少? 思路:dp方程如下:设dp[i]为把前i个数分成合法的若干段最大值的最小值是多少.dp转移比较显然,dp[i] = min{dp[j] + max(a[j + 1] , a[j + 2] ... + a[i])}, 其中a[j + 1] + a[j + 2] +... + a[i] <= m;这个dp转移是O(n^2)的,我们需要用单调队列优化.单调队列维护的是a值单调递减的序列(要保证…