dp
chen_kkkk
这个作者很懒,什么都没留下…
展开
-
hdu/hdoj 1003 Max Sum
dp入门题。思路就不解释了#include #include using namespace std;const int INF=numeric_limits::min();int array[100001];int main(){ int t; cin>>t; for (int kk=1; kk<=t; ++kk) {原创 2013-08-27 10:49:49 · 603 阅读 · 0 评论 -
hdu 1171 Big Event in HDU
可以用多重背包可以用母函数#include using namespace std; int c1[250010], c2[250010];int value[55];int amount[55];int main(){ int nNum; while(scanf("%d", &nNum) && nNum>0) { me原创 2013-08-30 11:57:01 · 644 阅读 · 0 评论 -
hdu 1159 Common Subsequence
求最长连续公共字串状态转移方程就直接看代码吧;#include #include #include #include #include using namespace std;string s1,s2;int dp[1100][1100];int main(){ while (cin>>s1>>s2) { memset(原创 2013-08-30 10:36:25 · 586 阅读 · 0 评论 -
hdu/hdoj 1081 To The Max
最大子矩阵枚举每种子矩阵情况,然后就是一个一维dp了#include #include #include using namespace std;const int INF=numeric_limits::min();int array[101][101];int aa[101];int main(){ int t; whil原创 2013-08-29 17:31:41 · 633 阅读 · 0 评论 -
hdu/hdoj 1075 FatMouse and Cheese
记忆化搜索;和滑雪那个题目很像;题意:老鼠偷吃,有n*n的方阵,每个格子里面放着一定数目的粮食,老鼠每次只能水平或竖直最多走k步,每次必须走食物比当前多的格子,问最多吃多少食物。#include #include #include using namespace std;int n,k;int map[110][110];int dp[110][110]原创 2013-08-29 16:08:52 · 539 阅读 · 0 评论 -
hdu/hdoj 1114 Piggy-Bank
题目大意:用储钱罐存钱,知道目前罐的重量以及空罐的重量,然后给出n种硬币的币值和重量,问现在储钱罐里至少有多少钱这个题是一个完全背包问题,不过注意的是最小值;状态转移方程我就不写了#include using namespace std; int nCases;int nPack, nVolume1, nVolume2, nVolume;int weight[原创 2013-08-29 21:02:19 · 648 阅读 · 0 评论 -
hdu/hdoj 1087 Super Jumping! Jumping! Jumping!
入门dp;求不连续最大上升子串方程自己看代码#include #include #include using namespace std;int price[1001];__int64 dp[1001];int max(int x,int y){ return x>y?x:y;}bool cmp(__int64 x,__int64 y){原创 2013-08-29 20:24:28 · 583 阅读 · 0 评论 -
hdu/hdoj 1069 Monkey and Banana
题目大意:给你N种箱子,给出它的长,宽,高;(每种箱子视为无限个)。把箱子叠层起来,问最大能叠多高。但要求的必须在上面一个箱子的长和宽都要比它下面的箱子的长和宽都小。思路:其实就是求最长的单调递减序列。题目上说每种可以有无限个,那么就把N中类型的箱子都列举出来,全部进行比较。在长和宽的递减下,求最大能得出的最大高度了。#include #include using原创 2013-08-29 15:23:13 · 672 阅读 · 0 评论 -
puk 1088 滑雪(记忆化搜索)
原文地址点击打开链接 http://acm.pku.edu.cn/JudgeOnline/problem?id=1088非常经典的一道动态规划题,AC的时候心情简直舒畅到了极点.时间限制是1000MS,如果直接用DFS肯定超时的.马上想到动归,用opt[i][j]记录从点node[i][j]出发的最短路径(不算本身,只算延伸;也就是初始值为0)状态转移方程opt转载 2013-08-28 17:53:00 · 582 阅读 · 0 评论 -
hdu 1176 免费馅饼
这就是一个数塔,只是我觉得这个题有点难想到是数塔;知道是数塔就简单了#include #define MAX 100001 using namespace std; int Hash[MAX][20]; int f[MAX][20]; int n; int get_max(int a, int b, int c) { int max = -1;原创 2013-08-30 14:43:19 · 635 阅读 · 0 评论