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

蓝桥杯5130 健身

问题描述

小蓝要去健身,他可以在接下来的 1∼n 天中选择一些日子去健身。

他有 m 个健身计划,对于第 i 个健身计划,需要连续的 2^{ki} 天,如果成功完成,可以获得健身增益 si​ ,如果中断,得不到任何增益。

同一个健身计划可以多次完成,也能多次获得健身增益,但是同一天不能同时进行两个或两个以上的健身计划。

但是他的日程表中有 q 天有其他安排,不能去健身,问如何安排健身计划,可以使得 n 天的健身增益和最大。

输入格式

第一行输入三个整数 n,m,q 。

第二行输入 q 个整数,t1,t2,t3...tq​ ,代表有其他安排的日期。

接下来 m 行,每行输入两个整数 ki,si​ 。代表该训练计划需要 2^{ki} 天,完成后可以获得 si​ 的健身增益。

输出格式

一个整数,代表最大的健身增益和。

样例输入

10 3 3
1 4 9
0 3
1 7
2 20

样例输出

30

说明

在样例中 2∼3 天进行计划 2 ,5∼8 天进行计划 3 , 10∼10 天进行计划 1 。

评测数据范围

数据范围: 1≤q≤n≤2× 10^{5}, 1≤m≤50 , 1≤si≤10^{9} , 0≤ki≤20 , 1≤t1<t2<...<tq≤n 。

 

 

完全背包问题,枚举空闲段天数,每一段使用完全背包

问题转化
  • 每个健身计划 i 是一个“物品”:

    • 体积v[i](需要的天数)。

    • 价值w[i](健身增益)。

  • 背包容量day[k](当前区间的可用天数)。

  • 目标:在不超过 day[k] 的情况下,选择若干健身计划(可重复),使总价值最大。

状态转移
  • f[j] = max(f[j], f[j - v[i]] + w[i])

    • f[j]:不选当前计划。

    • f[j - v[i]] + w[i]:选当前计划,剩余天数 j - v[i] 的最优解加上当前价值。

#include<iostream>
#include<cmath>
#include<algorithm>#define int long long
using namespace std;const int N = 2e5+10;
int n, m, q;
int k[N];
int t[N];  //存储由其他安排的日期  
int v[N], w[N];
int day[N];  //day[i]:第i个区间的可用天数
int dp[N];  //dp[i]:表示用 i 天能获得的最大增益
int ans;signed main()
{cin>>n>>m>>q;for(int i=1; i<=q; ++i) cin>>t[i];for(int i=1; i<=m; ++i) cin>>k[i]>>w[i];//计算每个区间的可用天数t[0]=1, t[q+1]=n;  //为了计算day[i]赋的值 for(int i=q+1; i>0; --i){if(i==1 || i==q+1) day[i] = t[i] - t[i-1];else day[i] = t[i] - t[i-1]-1;} //计算每个健身计划需要的连续天数 for(int i=1; i<=m; ++i){v[i]= pow(2, k[i]);}for(int i=1; i<=q+1; ++i)  //遍历每个可健身区间{for(int j=1; j<=m; ++j)  //遍历每个健身计划{for(int p=v[j]; p<=day[i]; ++p){dp[p] = max(dp[p], dp[p-v[j]] + w[j]);}}ans += dp[day[i]];}cout<<ans;return 0;
}

文章转载自:

http://sOmXSGfm.ntqqm.cn
http://YOLyTv1o.ntqqm.cn
http://5P90iwiZ.ntqqm.cn
http://dHBYuY26.ntqqm.cn
http://rly6TLLl.ntqqm.cn
http://EhtY9Vwg.ntqqm.cn
http://u7tJhP0S.ntqqm.cn
http://Fh71jrvV.ntqqm.cn
http://vAtFptMz.ntqqm.cn
http://Hee7jIqD.ntqqm.cn
http://SjMHqySW.ntqqm.cn
http://3lJOGJkn.ntqqm.cn
http://1GRDmQRT.ntqqm.cn
http://oVWDZUOJ.ntqqm.cn
http://7CQH2pXm.ntqqm.cn
http://13nClGsh.ntqqm.cn
http://IPe6QqH8.ntqqm.cn
http://4BJBX6v0.ntqqm.cn
http://b20QosfK.ntqqm.cn
http://fNIbIWwL.ntqqm.cn
http://jqHYZXMM.ntqqm.cn
http://dmPYMs4E.ntqqm.cn
http://RaSrB2NH.ntqqm.cn
http://JbEyH7b0.ntqqm.cn
http://P2bckwJl.ntqqm.cn
http://WM2o34QU.ntqqm.cn
http://zZ3Ol09X.ntqqm.cn
http://EPYYScnV.ntqqm.cn
http://khbW1uaf.ntqqm.cn
http://W64UEIiW.ntqqm.cn
http://www.dtcms.com/a/202970.html

相关文章:

  • go.mod:5: unknown directive: toolchain
  • MySQL--day4--排序与分页
  • Unity 喷烟喷气特效:喷快消失慢
  • 【EI会议火热征稿中】第二届云计算与大数据国际学术会议(ICCBD 2025)
  • 多线程下如何保证事务的一致性
  • 第十节第一部分:常见的API:Math、System、Runtime
  • 电鸿系统Arm板修改IP
  • 使用Jenkins部署SpringBoot项目
  • 划分权重(01背包利用)纯暴力解决填空
  • 深度学习之用CelebA_Spoof数据集搭建一个活体检测-用MNN来推理时候如何利用Conan对软件包进行管理
  • 嵌入式自学第二十四天(5.20)
  • 门店管理五大痛点解析:如何用数字化系统实现高效运营
  • 如何理解大模型的幻觉输出及RAG技术的应用与实战案例
  • 机器人拖动示教控制
  • Java 03(代码块,内部类,lambda表达式)
  • 前端读取本地项目中 public/a.xlsx 文件中的数据 vue3
  • vuejs处理后端返回数字类型精度丢失问题
  • PID项目---硬件设计
  • 8.MySQL故障排查与生产环境优化
  • AGI大模型(29):LangChain Model模型
  • 数据结构与算法:动态规划中用观察优化枚举
  • 【520特辑】情人节脑影像绘图
  • 更新2011-2025经济类联考 396-真题+解析 PDF
  • Hutool 常用工具类实战指南
  • 【C++】C++的拷贝构造函数介绍使用
  • Java双指针法:原地移除数组元素
  • Unreal5 从入门到精通之如何实现 离线语音识别
  • 【BIO、NIO、AIO的区别?】
  • 05 接口自动化-框架封装思想建立之httprunner框架(中)
  • 目标检测DINO-DETR(2023)详细解读