洛谷P1510 题解
前言:
其实这道题挺水的,但我居然把ta想成了 贪心 啪啪打脸
好了,废话不多说。
思路:
step 1:先翻译以下题意,其实就是求出最多消耗多少体力能把东海填满,如果不能填满,就输出“Impossible”
step 2:于是想到 贪心 01背包,以搬石头消耗的体力为物品的体积,以石头的
step 3:我们现在已经求出(1~c)所有体力可搬走的最大的体积,假如此时以i体力可填满东海,消耗的体力就是(c-i);如果以c的体力都不能填满,就输出“Impossible”
最后给你一个假code(不要抄哦,后果自负)
#include<bits/stdc++.h>
#define Maxn 10010
#define Maxv 10010
#define Maxc 10010
#define int long long
using namespace std;
int v,n,c;
struct node
{
int v0,c0;//每个石头的体积及搬走需要的体力
}rock[Maxn];
int f[Maxc];
int main()
{
scanf("%d%d%d",&v,&n,&c);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&rock[i].v0,&rock[i].c0);
}
for(int i=1;i<=n;i++)
{
for(int j=c;j>=rock[i].c0;j--)
{
if(f[j]<f[j-rock[i].c0]+rock[i].v0)
{
f[j]=f[j-rock[i].c0]+rock[i].v0;//以搬石头消耗的体力为物品的体积,以石头的体积为物品可创造的价值,最后f[i](i=1~c)表示耗费i体力搬走的石头的总体积
}
}
}
for(int i=1;i<=c;i++)
{
if(f[i]>=v)//假如此时耗费了i体力已经填满了
{
printf("%d",c-i);//计算剩下的体积
return 0;
}
}
puts("Impossible");//枚举完了所有可用的体积,都不可以填满,就Impossible
return 0;
}
相似题:
P2918 [USACO08NOV]买干草Buying Hay
思路:两道题其实很相似,这道题是以开销的美元为物品的体积,以购买的干草的磅数为物品可创造的价值做完全背包
后记:
其实这道题想到01背包挺容易的,主要是看到 只能用一次的石头消耗一次性的体力可填的最大的体积
这就是01背包的本质
其实这一段是给自己看的
洛谷P1510 题解的更多相关文章
- 洛谷 P1510 精卫填海
洛谷 P1510 精卫填海 题目描述 [版权说明] 本题为改编题. [问题描述] 发鸠之山,其上多柘木.有鸟焉,其状如乌,文首,白喙,赤足,名曰精卫,其名自詨.是炎帝之少女,名曰女娃.女娃游于东海,溺 ...
- [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码
[洛谷P3376题解]网络流(最大流)的实现算法讲解与代码 更坏的阅读体验 定义 对于给定的一个网络,有向图中每个的边权表示可以通过的最大流量.假设出发点S水流无限大,求水流到终点T后的最大流量. 起 ...
- 洛谷P5759题解
本文摘自本人洛谷博客,原文章地址:https://www.luogu.com.cn/blog/cjtb666anran/solution-p5759 \[这道题重在理解题意 \] 选手编号依次为: \ ...
- 关于三目运算符与if语句的效率与洛谷P2704题解
题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图.在每一格平原地形上最 ...
- c++并查集配合STL MAP的实现(洛谷P2814题解)
不会并查集的话请将此文与我以前写的并查集一同食用. 原题来自洛谷 原题 文字稿在此: 题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. ...
- 洛谷P2607题解
想要深入学习树形DP,请点击我的博客. 本题的DP模型同 P1352 没有上司的舞会.本题的难点在于如何把基环树DP转化为普通的树上DP. 考虑断边和换根.先找到其中的一个环,在上面随意取两个点, 断 ...
- 【洛谷】题解 P1056 【排座椅】
题目链接 因为题目说输入保证会交头接耳的同学前后相邻或者左右相邻,所以一对同学要分开有且只有一条唯一的通道才能把他们分开. 于是可以吧这条通道累加到一个数组里面.应为题目要求纵列的通道和横列的通道条数 ...
- 洛谷P3572题解
这道题实在是一道 毒瘤 题,太坑爹了.那个写 \(deque\) 的题解亲测只有80分,原因 不言而明 ,这道题居然 丧心病狂 到 卡STL . 好了,不吐槽了,进入正题 题目分析: 这是一道十分 简 ...
- [洛谷P1972][题解][SDOI2009]HH的项链
别碰我! 自己还是太蒟了…… 看了好久,最后抄参考题解打出来的…… 前面的可能影响后面的,所以按照询问右端点排序 这时候维护一个前缀和数组就可以了, 那么问题又来了,去重? 可以这样,从前往后枚举,如 ...
随机推荐
- Win32小游戏--蜘蛛纸牌
前一段时间完成了蜘蛛纸牌的仿写,现将过程和思路记录下来 首先,为了符合复用性,在win32的基本框架中,把可变的部分用c++封装起来成为一系列虚函数,这样如果再继续写游戏的话,只需要继承这个类就可以了 ...
- 利用os模块生成 文件夹和文件
需求: 使用os模块创建如下目录结构 glance/ ├── __init__.py ├── api │ ├── __init__.py │ ├── policy.py │ └── versions. ...
- VM虚拟机 VMWare Workstation Pro v15.0.1 中文破解版
虚拟机软件VMware Workstation Pro 15.0 全新版本发布,此次更新了诸多客户机操作系统版本,另外完全兼容Win10创意者更新支持.12.0之后属于大型更新,专门为Win10的安装 ...
- centos7 + Nginx+ HTTPS + uwsgi + python3.6 + Docker + Django1.11 + mysql 5.6 + virtualenv 环境搭建
环境搭建: 系统: centos7.2 x64 开发环境: python3.6 Django 1.11 虚拟环境: [Docker](https://www.runoob.com/dock ...
- Java 将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML
同一文档在不同的编译或阅读环境中,需要使用特定的文档格式来打开,通常需要通过转换文档格式的方式来实现.下面将介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF.图片png.sv ...
- 使用cmd打开磁盘目录和文件
例如: 1.进入e盘 2.查看E盘下所有文件 3.进入指定文件夹
- Bzoj 2013 [Ceoi2010] A huge tower 题解
2013: [Ceoi2010]A huge tower Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 471 Solved: 321[Submit ...
- android_sdcard读写(二)
接着上篇,继续研究sdcard的神秘之处.上篇代码不变,本篇新增代码都在下面~~~ 继续上代码~~ // 写文件 File path = new File("/mnt/sdcard/sxp/ ...
- MyBatis:choose标签的用法
<!-- 4.2 choose用法 需求: 在已有的sys_user表中,除了主键id外,我们认为user_name也是唯一的, 所有的用户名都不可以重复.现在进行如下查询:当参数id有值的时候 ...
- Dapper学习笔记
听说有个轻量化的orm Dapper,我就去了解下.试着对Sql Server和Mysql进行增删改查,体验不错.它不如EF臃肿,也比一般的封装灵活,比如我们封装了一个映射类.利用反射,在Execut ...