当前位置: 首页 > news >正文

算法题(225):樱花

审题:
本题需要我们解决包含三种背包(01,完全,多重)的问题

思路:
方法一:混合背包动态规划

本题的背包类型是根据p值区分的,p为0时完全背包(无限次数),p为1时01背包(看一次),p大于1时多重背包(看多次)

(1)状态表示:
f[i][j]表示在前i棵树中看,保证使用时间不超过j的前提下,所欣赏到的最高美学价值

(2)状态转移方程:
我们可以根据p值不同来使用对应背包的状态转移方程

需要特别注意的就是他们的执行条件,01和完全背包只要注意j>=t[i]即可,多重背包要注意k<=p[i]且j>=k*t[i]

(3)初始化:
直接初始化为0即可

(4)填表顺序:
完全背包需要依赖当前行左侧,所以横向我们需要从小到大遍历,而所有背包都要依赖上一行,所以纵向需要从小到大遍历

(5)答案输出:
我们直接输出f[n][m]即可

(6)空间优化:

降维之后:
对于完全背包来说,需要保证横向从小到大填,保证前面(左侧)数据被更新

对于其他背包来说,需要保证横向从大到小填写,保证前面(左侧)数据不被更新

解题:
 

#include<iostream>
using namespace std;
const int N = 1e4+10, M = 1010;
int n,m;
int t[N], c[N], p[N];
int f[M];
int main()
{//数据预处理int t1, t2, t3, t4; char ch;cin >> t1 >> ch >> t2 >> t3 >> ch >> t4 >> n;m = (t3 * 60 + t4) - (t1 * 60 + t2);for (int i = 1; i <= n; i++){cin >> t[i] >> c[i] >> p[i];}//填表for (int i = 1; i <= n; i++){if (p[i] == 0)//完全{for (int j = t[i]; j <= m; j++){f[j] = max(f[j], f[j - t[i]] + c[i]);}}else {for (int j = m; j >= t[i]; j--){if (p[i] == 1)//01{f[j] = max(f[j], f[j - t[i]] + c[i]);}else//多重{for (int k = 1; k <= p[i] && j >= k*t[i]; k++){f[j] = max(f[j],f[j - k * t[i]] + k * c[i]);}}}}}cout << f[m] << endl;return 0;
}

P1833 樱花 - 洛谷

http://www.dtcms.com/a/439097.html

相关文章:

  • 做互联网的网站app客户端网站建设方案
  • 网站描述 关键词上海 有哪些做网站的公司
  • 计算机网络技术电商网站建设与运营方向怎么投放广告
  • 低空经济新纪元:AI驱动的智能无人机技术与应用
  • 专业建站分销商城a wordpress
  • 创建一个顺序栈,并实现基础的“出栈入栈”功能(C++版)
  • 定制手机壳的网站广州冼村旧改最新消息
  • 怎么做淘宝客网站备案网站后台的形成
  • wordpress安装后查看站点失败河北平台网站建设
  • 网站专题页制作网站备案关闭影响排名
  • Python Flask框架深度解析:从入门到高级
  • 网站销售的优势生鲜做的好的网站
  • 中企动力做的网站怎么登陆运城市住房与城乡建设厅网站
  • 香橙派RK3588s部署大模型
  • 【自记】数据开发中分区表、事务表、分区事务表:特性相似处与区别
  • ATMS课程管理系统 - 从零构建的MySQL实战之旅
  • 广东东莞自己建站教程做网站设计的公司叫什么
  • 网站站外引流怎么做西安动力无限网站建设
  • 智能交通顶刊TITS论文分享|一种可以提高车辆轨迹预测精度和稳定性的稀疏时空Transformer模型
  • 福州专业网站设计团队seo排名优化公司
  • 进入WSL2 Ubuntu环境的完整指南
  • 龙岗网站建设公司效果河南建筑官网首页
  • 网站前置审批怎么进网站源码的后台
  • 电商网站建设考试题网站头部优化文字怎么做
  • php做网站有哪些好处界面官方网站
  • perror与stderr:错误处理的“诊断专家“与“急诊通道“
  • 小公司做网站需要什么条件绿茶直播
  • import-route direct 概念及题目
  • K230基础-图像绘制
  • 鲜花网站设计php 企业网站 后台图片上传