之前做过的传纸条那道题就是双重动态规划的典型应用,题意就不描述了,直接贴一下以前写过的,经典代码

 #include<iostream>
using namespace std;
const int maxn=,maxm=;
int MAX(int x,int y)
{
return x>y?x:y;
}
int MAX1(int x,int y,int z,int w)
{
return MAX(MAX(x,y),MAX(z,w));
}
int m,n;
int ans=;
//
int a[maxm][maxn];
int f[maxm][maxn][maxm][maxn];
void dp()
{
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
for(int k=;k<=m;k++)
{
for(int l=;l<=n;l++)
{
if(j==l||i==k) continue;
f[i][j][k][l]=a[i][j]+a[k][l]+MAX1(f[i-][j][k-][l],f[i][j-][k-][l],f[i-][j][k][l-],f[i][j-][k][l-]);
}
}
}
}
ans=a[m][n]+MAX(f[m-][n][m][n-],f[m][n-][m-][n]);
} int main()
{
cin>>m>>n;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
cin>>a[i][j];
dp();
cout<<ans<<endl;
return ;
}

我记得当时写过记忆化+dp的,这里不贴了

Codevs1444

把歌曲分堆,然后各自求最优装载,分别用01背包算法。

由于不知道如何分堆才会产生最优解,所以第一次动态规划算出每个区间段的最优装载,然后第二个动态规划求出最优的分堆。这题可以用双重动态规划求解。

N(1 <= N <= 20)首歌的版权。你打算从中精选一些歌曲,发行M(1 <= M <= 20)张CD。每一张CD最多可以容纳T(1 <= T <= 20)分钟的音乐,一首歌不能分装在两张CD中

第一行:   三个整数:N, T, M.

第二行:   N个整数,分别表示每首歌的长度,按创作时间顺序排列。

 #include<iostream>
using namespace std;
const int maxn=;
long maxx[maxn][maxn];
long best[maxn][maxn];
long best2[maxn];
int main()
{
long a[maxn];
int n,t,m;
cin>>n>>t>>m;
for(int i=;i<=n;i++)
{
cin>>a[i];
} for(int i=;i<=n;i++)
{
for(int i=;i<=t;i++)
{
best2[i]=;
}
for(int j=i;j<=n;j++)
{
for(int k=t;k>=a[j];k--)
{
if(best2[k-a[j]]+>best2[k])
best2[k]=best2[k-a[j]]+;
}
maxx[i][j]=best2[t];
}
}
for(int i=;i<=n;i++)
{
best[i][]=maxx[][i];
for(int j=;j<=m;j++)
{
for(int k=i;k>=;k--)
{
if(best[k][j-]+maxx[k+][i]>best[i][j])
best[i][j]=best[k][j-]+maxx[k+][i];
}
}
}
cout<<best[n][m]<<endl;
return ;
}

动态规划:双重DP的更多相关文章

  1. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  2. Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)

    Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...

  3. 【学习笔记】动态规划—各种 DP 优化

    [学习笔记]动态规划-各种 DP 优化 [大前言] 个人认为贪心,\(dp\) 是最难的,每次遇到题完全不知道该怎么办,看了题解后又瞬间恍然大悟(TAT).这篇文章也是花了我差不多一个月时间才全部完成 ...

  4. Leetcode之动态规划(DP)专题-647. 回文子串(Palindromic Substrings)

    Leetcode之动态规划(DP)专题-647. 回文子串(Palindromic Substrings) 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子 ...

  5. Leetcode之动态规划(DP)专题-474. 一和零(Ones and Zeroes)

    Leetcode之动态规划(DP)专题-474. 一和零(Ones and Zeroes) 在计算机界中,我们总是追求用有限的资源获取最大的收益. 现在,假设你分别支配着 m 个 0 和 n 个 1. ...

  6. Leetcode之动态规划(DP)专题-486. 预测赢家(Predict the Winner)

    Leetcode之动态规划(DP)专题-486. 预测赢家(Predict the Winner) 给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端 ...

  7. Leetcode之动态规划(DP)专题-264. 丑数 II(Ugly Number II)

    Leetcode之动态规划(DP)专题-264. 丑数 II(Ugly Number II) 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n ...

  8. Leetcode之动态规划(DP)专题-198. 打家劫舍(House Robber)

    Leetcode之动态规划(DP)专题-198. 打家劫舍(House Robber) 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互 ...

  9. Leetcode之动态规划(DP)专题-121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock)

    Leetcode之动态规划(DP)专题-121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock) 股票问题: 121. 买卖股票的最佳时机 122. 买卖股票的最 ...

  10. Leetcode之动态规划(DP)专题-122. 买卖股票的最佳时机 II(Best Time to Buy and Sell Stock II)

    Leetcode之动态规划(DP)专题-122. 买卖股票的最佳时机 II(Best Time to Buy and Sell Stock II) 股票问题: 121. 买卖股票的最佳时机 122. ...

随机推荐

  1. C++:构造函数1——普通构造函数

    前言:构造函数是C+中很重要的一个概念,这里对其知识进行一个简单的总结 一.构造函数的定义 1.类中的构造函数名与类名必须相同 2.构造函数没有函数的返回类值型说明符 [特别注意]: a.构造函数的返 ...

  2. mysql hql异常

    org.springframework.dao.InvalidDataAccessResourceUsageException:  could not execute query; nested ex ...

  3. playbook详解—YAML格式的文本

    在playbook中有一些核心的指令 hosts:指明命令运行在哪个node之上 remote_user:在远端的node之上以什么用户的身份运行命令 var:给模板传递变量值 tasks:指明需要执 ...

  4. 201621123037 《Java程序设计》第4周学习总结

    #Week04-面向对象设计与继承 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 关键词:超级父类."is-a".父类.子类.重载.继承.多态 1.2 尝 ...

  5. CentOS 7 开放3306端口访问

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙.1.关闭firewall:systemctl stop firewalld.servicesystemctl ...

  6. python获取toast 验证

    appium版本 1.6.3  desired_caps['automationName']='uiautomator2'    def _find_toast(self,message,timeou ...

  7. MySQL复制 -- Binlog (1)

    复制之所以工作得益于MySQL把对数据库的变更都记录在 binlog中,然后主库把它读出来,放到从库上去应用.当然binlog 的用途不仅限于此,比如 PITR等 在5.1.4版本以前,binlog格 ...

  8. 修改gcc/g++默认include路径

    修改gcc/g++默认include路径 转自:http://www.network-theory.co.uk/docs/gccintro/gccintro_23.htmlhttp://ilewen. ...

  9. py2exe使用总结

    假如你用python写了个小程序,想给别人用或者给别人演示,但他电脑里没装python.wxpython等,这时候你可以试试py2exe,它是一个将python脚本转换成windows上的可执行程序( ...

  10. [JSOI2007]字符加密 后缀数组

    题面:洛谷 题解: 我们考虑,如果可以将环上每个长度为len的串都提取出来,再做个排序,那这题我们就做出来了! 但是提取$n^2$,怎么办? 考虑破环成链,再扩充为原来的2倍. 然后直接做后缀排序,把 ...