学dp学到自闭(真的判断不出是个dp问题哇)

来看一下最近学的dp简单的题库.

1.01背包问题(P1048)

这个的特点是每种东西只能拿一次.

https://www.luogu.com.cn/problem/P1048

二维dp:

  for(int i=;i<=m;i++)
{
scanf("%d%d",&w[i],&val[i]);
}
for(int i=;i<=m;i++)
for(int j=t;j>=;j--) //注意这个地方是倒着来的
{
if(j>=w[i])
{
dp[i][j]=max(dp[i-][j-w[i]]+val[i],dp[i-][j]);
}
else
{
dp[i][j]=dp[i-][j];
}
}
printf("%d",dp[m][t]);

一维dp:

     for(int i=;i<=m;i++)
{
scanf("%d%d",&w[i],&val[i]);
}
for(int i=;i<=m;i++)
{
for(int j=t;j>=;j--)
{
if(j>=w[i])
{
dp[j]=max(dp[j-w[i]]+val[i], dp[j]);
}
}
}

01背包问题可以再加一个例题:

https://www.luogu.com.cn/problem/P1802

 for(int i=;i<=n;i++){
for(int j=x1;j>=;j--){
if(j>=b[i]){//如果有足够的药剂打赢别人,则看是输好还是赢好
f[j]=max(f[j]+a[i][],f[j-b[i]]+a[i][]);
}
else f[j]+=a[i][];//没有足够药剂就一个都不用直接认输,不然就浪费了药剂
}
}

2.完全背包(P1616)

这个与上一个的区别在于:这次的物品可以无限取.每种东西是不限量的.

代码的区别也很简单,这次是正着来的

https://www.luogu.com.cn/problem/P1616

 for(int i=;i<=n;i++)
for(int j=w[i];j<=V;j++)
f[j]=max(f[j],f[j-w[i]]+c[i]);

最新文章

  1. JSFiddle
  2. 如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程
  3. SVN更新时,校验和不匹配
  4. servlet获取表单数据的方式和编码方式
  5. 用C++写一个简单的服务器和客户端
  6. Spring中的FactoryBean
  7. c++多态的案例分析
  8. scrapy_Response and Request
  9. Spring基础篇——bean的自动化装配
  10. LeetCode(29)-Plus One
  11. Chapter 5 Blood Type——29
  12. python语法之函数2
  13. VUE 全局变量的几种实现方式
  14. 记账本,C,Github,Dao
  15. 树莓派安装vnc server并设置自启动
  16. js发送请求
  17. php + mysql 分布式事务
  18. delphi’线程新技术 并行计算
  19. js原型鏈與js繼承解析
  20. Android - View的绘制流程一(measure)

热门文章

  1. JQ三种提示框:提示信息框、确认框、输入文本框
  2. 《UNIX环境高级编程》(APUE) 笔记系列
  3. Ribbon软负载 (F版)
  4. 为什么总是无法访问VMware内的web服务?
  5. 遍历form中的所有空间并找到选中的radiobutton
  6. mmdetection源码剖析(1)--NMS
  7. html table表格斜线表头的实现方法总汇
  8. 调整数组顺序使奇数位于偶数前面(剑指offer-13)
  9. python 魔法方法总结
  10. 数据可视化之powerBI入门(十)认识Power BI的核心概念:度量值