一只叫做"动态规划"的白鼠
Last0rder
最后之作
展开
-
uva357 Let Me Count The Ways
注意PE……#include#include#include#include#include#include#include#include#include#includeusing namespace std;int coin[5]={1,5,10,25,50};long long dp[30010];int main(){ int i,j; dp[0]=1;原创 2014-11-07 16:59:57 · 1010 阅读 · 0 评论 -
UVA 10465 Homer Simpson
在t分钟内吃两种耗时不同的汉堡,首先保证耗时最多,然后保证汉堡吃最多,最后剩下的时间喝酒#include#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){ int a[2]; int dp[2][10010];原创 2014-11-21 17:17:52 · 967 阅读 · 0 评论 -
UVA - 10285 Longest Run on a Snowboard
从任意点出发,走出一条严格递减的序列出来,看最长序列是多长#include#include#include#include#include#include#include#include#include#includeusing namespace std;int a[110][110];int dp[110][110];int dx[4]={0,0,-1,1};原创 2014-11-21 20:38:10 · 925 阅读 · 0 评论 -
UVA - 10131 Is Bigger Smarter?
DAG最长路……#include#include#include#include#include#include#include#include#include#includeusing namespace std;int tail;int head[1010];int dp[1010];struct Edge{ int to,next;}edge[10000原创 2014-11-06 14:57:20 · 1108 阅读 · 0 评论 -
UVA - 116 Unidirectional TSP
注意……可穿墙……#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int inf=1<<31;int a[20][110];int dp[20][110];int n,m,ans;int dfs(int原创 2014-11-06 12:14:52 · 1223 阅读 · 0 评论 -
UVA - 10066 The Twin Towers
最长公共子序列#include#include#include#include#include#include#include#include#include#includeusing namespace std;int a[110];int b[110];int dp[110][110];int dfs(int i,int j){ if(i<0||j<原创 2014-11-06 15:18:12 · 874 阅读 · 0 评论 -
UVa 10404. Bachet's Game
题意为给出总石子数n,和m堆石子,两个人轮着取石子,每次只能从总石子中取m堆中的一堆的个数的石子,取走最后一个石子的胜。S先取,O后取。用博弈的输赢观念+dp就可以了,由于记忆化搜索会爆栈,那就递推了,索性还好推……不然就不会了……#include#include#include#include#include#include#include#includ原创 2014-12-04 18:28:58 · 1111 阅读 · 0 评论 -
uva 825 Walking on the Safe Side
卡的一手好输入输入处理懒得写了,直接复制了,23333给出n,m,现在给出n行数据, 每行有k(k为不定值)个数字, 第一个数字代表行数, 后面k - 1个数代表当前行的这个位置不可走, 问有多少路径可以从(1,1)到(n,m),只能向下或向右。#include #include const int N = 1005;int n, m, dp[N][N],原创 2014-12-04 22:17:06 · 854 阅读 · 0 评论 -
UVa 10069 - Distinct Subsequences
dp+大数加法。设母串的长度为 j, 子串的长度为 i,我们要求的就是长度为 i 的字串在长度为 j 的母串中出现的次数。(1)若母串的最后一个字符与子串的最后一个字符不同,则长度为 i 的子串在长度为 j 的母串中出现的次数就是母串的前 j - 1 个字符中子串出现的次数,即 str[i][j] = str[i][j - 1];(2)若母串的最后一个字符与子串的最后一个字符相同,那么原创 2014-12-05 15:54:01 · 763 阅读 · 0 评论 -
UVa 10534. Wavio Sequence
这题是要找一个最长(假设长度为2N-1)的子序列,使得前N个元素递增,后N个元素递减。由于N比较大,直接上n^2的dp会超时……用另外的方法……贪心+二分……这应该不算dp了……好吧……也许可用斜率dp解?额……我不会最长上升子序列问题:给出一个由n个数组成的序列x[1..n],找出它的最长单调上升子序列。即求最大的m和a1,a2……,am,使得a1原创 2014-12-06 16:23:42 · 1030 阅读 · 0 评论 -
UVA - 590 Always on the run
有n个点,问第k天从1到n的最少花费(第0天在点1)已知两两之间穿梭需要的花费已知从x到y,第几天的花费是多少(每天花费都可能不同,为0代表该天不可走)啊,就是这样原创 2014-12-07 20:52:35 · 948 阅读 · 0 评论 -
UVA 10003 - Cutting Sticks
#include#include#include#include#include#include#include#include#include#includeusing namespace std;int a[100];int n;int dp[1010][1010];int dfs(int s,int e){ int i; if(dp[s][e]>-1)原创 2014-11-05 20:52:48 · 1035 阅读 · 0 评论 -
uva 674 - Coin Change
#include#include#include#include#include#include#include#include#include#includeusing namespace std;int dp[8000];int coin[5]={1,5,10,25,50};int main(){ int i,j,x; dp[0]=1; for(i=0;i<原创 2014-11-05 19:47:59 · 1067 阅读 · 0 评论 -
uva10192-Vacation
#include#include#include#include#include#include#include#include#include#includeusing namespace std;int dp[110][110];int main(){ int i,j,n,m,cs=0; string a,b; while(getline(cin,a)) {原创 2014-11-07 13:14:39 · 979 阅读 · 0 评论 -
uva-147 - Dollars
#include#include#include#include#include#include#include#include#include#includeusing namespace std;int coin[11]={10000,5000,2000,1000,500,200,100,50,20,10,5};long long dp[30010][20];long原创 2014-11-07 13:15:43 · 941 阅读 · 0 评论 -
uva 562 Dividing coins
反正两个人,必定至少有一个人手里的硬币价值是小于或等于所有硬币价值之和的一半的那么我们就来扮演这个人,他的背包大小是硬币价值的一半,问,他能拿到的硬币价值的总和最大是多少?01背包#include#include#include#include#include#include#include#include#include#includeus原创 2014-11-07 20:03:41 · 855 阅读 · 0 评论 -
uva 348 Optimal Array Multiplication Sequence
这个括号输出要按照它的来才行……不是任意一个都可以的……原创 2014-11-08 20:48:25 · 782 阅读 · 0 评论 -
uva 624 CD
01背包写成一维的好处是省内存,坏处是中间过程都没被保存,而这题要求打出路径如果直接写一维的然后标记,是不是有些本末倒置如果写记忆化搜索,我没想出来怎么写…… 也懒得想了,反正有现成的二维形式,二维的好处就是保存了路径所以很容易可以回溯出路径,其实这里如果写成一维的反而浪费了内存,因为你还要多开一个二维标记,所以说是本末倒置#in原创 2014-11-09 18:07:20 · 1113 阅读 · 0 评论 -
UVA - 111 History Grading
#include#include#includeusing namespace std;int dp[30][30];int ord[30];int stu[30];int main(){ //freopen("in","r",stdin); int n,i,j,t; cin>>n; for(i=1;i<=n;i++) { c原创 2014-11-04 16:24:13 · 1035 阅读 · 0 评论 -
UVA 10130 - SuperSale
一个人只能在里面选一件,物品有多件,也就是说不同的人可以选同一个物品,多个0-1背包相加。#include#include#include#include#include#include#include#include#include#includeusing namespace std;struct node{ int p,w;}a[1010];int main原创 2014-11-20 18:08:16 · 1222 阅读 · 0 评论 -
UVA - 531 Compromise
两段英文,比较最多有多少个单词连续一样,并将其输出……由于要求从头打出……dfs一发把……#include#include#include#include#include#include#include#include#include#includeusing namespace std;bool flag;int dp[110][110];string a[原创 2014-11-21 13:25:10 · 1158 阅读 · 0 评论 -
UVA - 103 Stacking Boxes
#include#include#include#include#include#include#include#include#include#includeusing namespace std;int head[50];int tail;int dis[50];struct Edge{ int to,next;}edge[1000];void add(in原创 2014-11-05 18:29:45 · 989 阅读 · 0 评论 -
UVA - 10405 Longest Common Subsequence
#include#include#include#include#include#include#include#include#include#includeusing namespace std;int dp[1010][1010];int main(){ int i,j,n,m; string a,b; while(getline(cin,a)) { g原创 2014-11-05 18:51:43 · 1237 阅读 · 0 评论 -
UVA - 10306 e-Coins
题目:有n种物品,每种物品有x, y两个价值,并且可以有无限多个。给定s,使得(x1+x2+....)^2 + (y1+y2+....)^2 = s ^ 2。并且物品个数最少。啊,一顿完全背包之后……再扫一顿……就可以了#include#include#include#include#include#include#include#include#inclu原创 2014-12-08 18:36:25 · 1104 阅读 · 0 评论