DP优化学习小结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DP优化学习小结

DP优化 学习小结 2010-08-27 15:55 这两天简单学习了一些动态规划的优化技巧,感觉自己的数学实在太弱了,虽然大概知道怎么用,但很多证明自己理解的还不是很透。 关于用单调队列优化的动态规划以前整理过一些,可以看这里:【 HYPERLINK /%B1%BF%D0%A1%BA%A2_shw/blog/item/2910950e9147ce276159f34d.html \t _blank 单调队列 学习小结】 四边形不等式优化 主要是对于dp(i,j)的决策点 s(i,j),通过单调性证明 s(i, j - 1)= s(i,j) = s(i + 1,j) 推荐2道题目: hdu3480? 【 HYPERLINK /showproblem.php?pid=3480  Division】 hdu2829? 【  HYPERLINK /showproblem.php?pid=2829 Lawrence】 2829 的代码: int n, m, num[1005], s[1005][1005]; long long w[1005][1005], dp[1005][1005]; int main(int argc, char** argv) { while (scanf(%d%d, n, m) != EOF) { if (n == 0 m == 0) break; for (int i = 1; i = n; i++) num[i] = next_int(); for (int i = 1; i = n; i++) { int t = 0; w[i][i - 1] = 0; FF(j, i, n) w[i][j] = w[i][j - 1] + t * num[j], t += num[j]; } if (m == 0) { printf(%d\n, w[1][n]); continue; } for (int i = 1; i = n; i++) dp[i][0] = w[1][i], s[i][0] = 0; for (int j = 1; j = m; j++) { s[n + 1][j] = n - 1; for (int i = n; i = j + 1; i--) { int head = max(s[i][j - 1], j); int rear = min(s[i + 1][j], i - 1); dp[i][j] = max_long; for (int k = head; k = rear; k++) { int temp = dp[k][j - 1] + w[k + 1][i]; if (temp dp[i][j]) dp[i][j] = temp, s[i][j] = k; } } } cout dp[n][m] endl; } return (EXIT_SUCCESS); } 斜率优化 推荐大家去看这篇论文【 HYPERLINK /view/f6421ce8b8f67c1cfad6b8ac.html \t _blank 浅谈数形结合思想在信息学竞赛中的应用 】 对于这类题目: 首先,证明斜率满足单调性,对于每个点找到其x 和 y。 然后,用一个队列,队首维护每次的最优决策点,队尾进队时维护一个下凸的折线。 推荐几个题目: hdu2933? 【  HYPERLINK /showproblem.php?pid=2933 Fairies Defence】 就是论文中的原题 apio2010? 【 HYPERLINK 32:8080/JudgeOnline/showproblem?problem_id=1911 特别行动队】 #define maxn 1000010 struct point { double x, y; }po[maxn]; double sum[maxn], dp[maxn], a, b, c; int n, arr[maxn];

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档