动态规划
文章平均质量分 51
ACder_chen
将AC进行到底
展开
-
poj3254压缩dp
#include #include #include using namespace std;/*& 全一则一, 否则 为零;| 有一则一, 否则 为零,~ 有一则零, 有零则一;^ 不同则一, 相同则零;*/int num[13];int n, m;int dp[13][5000];void input(){ int t; for(in原创 2013-10-24 21:21:18 · 607 阅读 · 0 评论 -
hdu 2059 龟兔赛跑 dp
参考大牛的代码,/*这道题目是DP中多阶段决策的典型例题我们将起点和终点划分到N个加电站中去这样一共有N+2点,用DP[i]表示到第i个加电站的最小耗费时间那么在求DP[i]的时候,DP[0]...DP[i-1]已经求得让j从0遍历到i-1,每一个j表示最后一次充电到i点那么状态转移方程为DP[i] = min(DP[j] + t(j, i)) //t(j, i)表示从j充完电一直到转载 2014-09-06 15:35:44 · 843 阅读 · 0 评论 -
hdu 1421 搬寝室 dp
对于DP题目, 一直没能入门, 每次都不能找到正确的状态转移方程。借鉴别人代码dp[i][j] i 代码i件物品, j 代表 组成 j 对时的最小疲劳值。dp[i][j] = min(dp[i-1][j] , dp[i-2][j-1] + (value[i-1] - value[i])*(value[i-1] - value[i]));解释: 如果当前 第 i 件物品不选,转载 2014-09-06 09:47:13 · 562 阅读 · 0 评论 -
poj 1080 dp
dp题目最重要的是找到递推关系和表示关系, 找到这两点基本就ok了, 如本题 dp[i][j]表示的含义第一个字符串的i个和s2的第j个匹配,它由三种情况得到,原创 2014-07-27 14:07:25 · 617 阅读 · 0 评论 -
poj 3249 dp
#include #include #include #include #include using namespace std;const int M = 100005;const int MAX = 99999999;int dist[M];int rdu[M];int cdu[M];int value[M];vectors[M];int n, m;int an原创 2014-04-12 17:24:45 · 611 阅读 · 0 评论 -
hdu 2089 不要62
#include #include #include using namespace std;int dp[10][3];int n, m;void init(){ memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for(int i = 1; i <= 6; i++) { dp[i][0] =转载 2013-10-27 12:05:06 · 701 阅读 · 0 评论 -
3254压缩dp
#include #include #include using namespace std;/*& 全一则一, 否则 为零;| 有一则一, 否则 为零,~ 有一则零, 有零则一;^ 不同则一, 相同则零;*/int num[13];int n, m;int dp[13][5000];void input(){ int t; for(in原创 2013-10-27 12:08:29 · 743 阅读 · 0 评论 -
hdu 3555 数位dp
#include #include #include using namespace std;__int64 dp[20][3];int T;__int64 n;void init(){ memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for(int i = 1; i < 20; i++) {原创 2013-10-27 12:06:32 · 619 阅读 · 0 评论 -
hud 1176 免费馅饼
#include#include#includeusing namespace std;int dp[100005][12];int main(){ int n,i,j,maxt; int x,t; while(scanf("%d",&n),n) { maxt=0; memset(dp,0,sizeof(dp));原创 2013-10-27 12:02:05 · 709 阅读 · 0 评论 -
zoj3872
#include #include #include #include using namespace std;const int M = 100005;int num[M];long long dp[M];long long check(int i){ long long s = 0; for(int k = i -1; k >= 1; k--){原创 2015-04-26 20:26:31 · 655 阅读 · 0 评论