动态规划
文章平均质量分 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 · 621 阅读 · 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 · 853 阅读 · 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 · 572 阅读 · 0 评论 -
poj 1080 dp
dp题目最重要的是找到递推关系和表示关系, 找到这两点基本就ok了, 如本题 dp[i][j]表示的含义第一个字符串的i个和s2的第j个匹配,它由三种情况得到,原创 2014-07-27 14:07:25 · 630 阅读 · 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 · 624 阅读 · 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 · 712 阅读 · 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 · 764 阅读 · 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 · 635 阅读 · 0 评论 -
hud 1176 免费馅饼
#include #include #include using 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 · 721 阅读 · 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 · 668 阅读 · 0 评论