Unidirectional TSP
Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu
Submit Status Practice UVA 116
Appoint description:Description
Download as PDFBackgroundProblems that requi...
分类:
其他好文 时间:
2015-07-22 16:15:29
阅读次数:
117
Coin Change
Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu
Submit Status Practice UVA 674
Appoint description:Description
Download as PDFSuppose there are 5 types of coins:...
分类:
其他好文 时间:
2015-07-21 12:55:39
阅读次数:
85
很显然,将物品按照重量排序后,如果要搬某一对物品,则这两件物品一定是相邻的。于是排序后依次考虑第i件物品放或者不放,即得到状态转移方程: f[i][j] = min( f( i - 1, j ), f( i - 2, j - 1 ) + d[i] );其中,d[i]表示第i件物品和第i-1件物品这....
分类:
其他好文 时间:
2015-07-16 11:20:45
阅读次数:
117
Number Triangles经典DP。自控老师曾经用了一节课讲这道题。。我以为我早就懂了,居然听不懂那一堆奇怪的公式。果然自控是天书。#include using namespace std;const int N = 1004;int f[N][N], dp[N][N];int main(){...
分类:
其他好文 时间:
2015-07-15 01:15:46
阅读次数:
96
题目链接:点击进入
以前也碰到过这种类型的dp,感觉就是状态不好定义和转移;原来定义状态的时候总是认为dp[i][j]就应该由dp[i-1][j-1]转移而来,这样的话就会导致需要记忆前面i-1步的所有状态,然后就是转移方程没法写了。对于这道题,我们定义状态dp[i][j]表示前j个餐馆建立i个仓库时的最小代价,然后状态转移为dp[i][j]=dp[i-1][k-1]+cost[k][j],意思是...
分类:
其他好文 时间:
2015-06-14 16:43:24
阅读次数:
135
题目链接:点击进入
上次做了一个类似的,不过是每次只能取一个的.这次规定可以一次取多个了.定义状态dp[i][j]表示面对区间(i,j)时可以得到的最大分数,然后dp[i][j]=max(sum[i+k][j]-dp[i+k][j]+sum[i][i-k+1],sum[i][j-k]-dp[i][j-k]+sum[j-k+1][j]).综合一下就是dp[i][j]=sum[i][j]-min(dp...
分类:
其他好文 时间:
2015-06-10 22:44:28
阅读次数:
129
题目传送:HDU - 1003
思路:最大子序列和
dp[i]= a[i] (dp[i-1]
dp[i]= dp[i-1]+a[i] (dp[i-1]>=0)
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2015-05-07 08:49:44
阅读次数:
203
括号匹配(二)时间限制:1000 ms | 内存限制:65535 KB难度:6描写叙述 给你一个字符串,里面仅仅包括"(",")","[","]"四种符号,请问你须要至少加入多少个括号才干使这些括号匹配起来。如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的输入第一行输入一个正整...
分类:
其他好文 时间:
2015-05-01 13:15:41
阅读次数:
116
经典dp
时间单向流动,是一个天然的序列,影响到决策的只有时间和所处的车站,所以用dp[i][j]表示在i时刻你在j车站,最少还需要等待多长时间。
状态就是时间和车站序号,状态转移方程就是 1、如果在该时刻该车站没有列车,等待时间+1;2、如果有向右开的列车dp[i][j] = min(dp[i][j],dp[i+t[j]][j+1]); 有两个选择,不乘坐或者乘坐;3、与2相似
#inc...
分类:
其他好文 时间:
2015-04-20 18:34:47
阅读次数:
164
经典DP。影响决策的是字符串的内容。而添加和删除字符本质上是一样的,我们不管选择哪一种都可以,所以只需要取两者中费用最小的。
状态转移方程就是:
if(s[i]==s[j]) dp[i][j] = dp[i+1][j-1];
else dp[i][j] = min(dp[i+1][j]+w[s[i]-'a'],dp[i][j-1]+w[s[j]-'a']);
其中dpd...
分类:
其他好文 时间:
2015-04-20 18:32:01
阅读次数:
100