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

洛谷 P1510:精卫填海 ← 动态规划

【题目来源】
https://www.luogu.com.cn/problem/P1510

【题目描述】
精卫终于快把东海填平了!只剩下了最后的一小片区域了。同时,西山上的木石也已经不多了。精卫能把东海填平吗?
事实上,东海未填平的区域还需要至少体积为 v 的木石才可以填平,而西山上的木石还剩下 n 块,每块的体积和把它衔到东海需要的体力分别为 k 和 m。精卫已经填海填了这么长时间了,她也很累了,她还剩下的体力为 c。

【输入格式】
输入文件的第一行是三个整数:v,n,c。
从第二行到第 n+1 行分别为每块木石的体积和把它衔到东海需要的体力。​​​​​​​

【输出格式】
输出文件只有一行,如果精卫能把东海填平,则输出她把东海填平后剩下的最大的体力,否则输出 Impossible(不带引号)。​​​​​​​

【输入样例一】
100 2 10
50 5
50 5

【输出样例一】
0

【输入样例二】
10 2 1
50 5
10 2​​​​​​​

【输出样例二】
Impossible

【数据范围】
对于 20% 的数据,0<n≤50;
对于 50% 的数据,0<n≤1000;
对于 100% 的数据,0<n≤10^4,所有读入的数均属于 [0,10^4],最后答案不大于 c。

【算法分析】
● 闫氏 DP 分析法:https://www.bilibili.com/video/BV1X741127ZM
● 最后一步法:https://www.bilibili.com/video/BV1xb411e7ww

【算法代码】
f[j] 表示容量为 j 时能获得的最大价值。

#include <bits/stdc++.h>
using namespace std;const int maxn=1e+5;
int val[maxn],vol[maxn],f[maxn];
int v,n,c;int main() {cin>>v>>n>>c;for(int i=1; i<=n; i++) cin>>val[i]>>vol[i];for(int i=1; i<=n; i++) {for(int j=c; j>=vol[i]; j--) {f[j]=max(f[j],f[j-vol[i]]+val[i]);}}for(int i=0; i<=c; i++) {if(f[i]>=v) {cout<<c-i;return 0;}}cout<<"Impossible";return 0;
}/*
in:
10 2 1
50 5
10 2out:
Impossible
*/





【参考文献】
https://www.cnblogs.com/Hoyoak/p/11373507.html
https://www.acwing.com/file_system/file/content/whole/index/content/12355190/
https://www.cnblogs.com/lipeiyi520/p/12293384.html
https://blog.csdn.net/hnjzsyjyj/article/details/147405964




 

http://www.jsqmd.com/news/351534/

相关文章:

  • 计算机小程序毕设实战-基于springboot+Android的井盖隐患智能识别小程序的设计与开发【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 新累土哲学:从直觉到形式化的跨越
  • 主权和智能体AI将定义中东数字化转型的下一阶段
  • 【课程设计/毕业设计】基于Android的养宠交流系统宠物领养宠物商城基于springboot+Android的养宠交流系统的设计与开发【附源码、数据库、万字文档】
  • java+vue基于springboot框架的美食商城网站设计与实现
  • 世毫九实验室(Shardy Lab)研究成果清单(2025版)
  • 现代汽车集团与沃达丰物联网在中东北非地区部署智能网联汽车
  • 20260206_221643_我,大专,月薪近3万,211领导看不惯我
  • 思科2026年AI峰会五大洞察及领导力的重要意义
  • 细胞电生理仿真软件:PyNN_(4).仿真环境设置
  • MySQL新手入门:吃透2个最常用的约束,少踩入门坑
  • Kubernetes 上的 Langflow 架构
  • 【课程设计/毕业设计】基于springboot+Android的井盖隐患智能识别小程序的设计与开发【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于springboot智慧医疗APP基于springboot+安卓的智慧医疗系统设计与实现【附源码、数据库、万字文档】
  • java+vue基于springboot框架的课堂考勤系统设计与实现
  • 软件测试--【自动化测试常用函数】(下) - 教程
  • 小程序毕设项目:基于springboot+Android的养宠交流系统的设计与开发(源码+文档,讲解、调试运行,定制等)
  • 普通大学的研究生写的sci初稿真的是惨不忍睹?——大家如何看待研究生发表sci论文?
  • 【课程设计/毕业设计】【附源码、数据库、万字文档】
  • 【计算机毕业设计案例】基于Android的智慧医疗问诊系统设计与实现基于springboot+安卓的智慧医疗系统设计与实现(程序+文档+讲解+定制)
  • 待办
  • 【GaussDB】在Oracle\PG\GaussDB库中实现用户甲在其它用户的SCHEMA中创建表的方法及所属属主的差异
  • java+vue基于springboot框架的课程学习平台的设计与实现
  • Vue3 创建项目指南
  • 聊一下谷歌的 notebookLM,以及一些技巧(转)
  • 【GaussDB】从RBAC到精细化控制的企业级安全实践
  • Git 一个本地仓库同时推送到两个远程仓库(详细教程)
  • 洛谷 P5386
  • 【openGauss】从“functions in index expression must be marked IMMUTABLE“谈起
  • MySQL 安装指南