洛谷P2240 【深基12.例1】部分背包问题(经典模板)

首先应该注意几个关键信息:装走尽多的金币、所有金币可以随意分割并且分割后金币的价值比不变;
我们可以抽象成一个买东西的场景,给你一定数目的钱,让你在这些钱内尽量在超市买更多的小零食,这就牵扯到了一个性价比的问题。
那如此,这个题目就好解决了,就用这个背包尽量装更多的金币,如果可以装的下,那就装好了,毕竟谁不喜欢钱呢;
那如果装不下呢(对于第i堆金币)?
这个就可以把金币分割了,在剩下的背包容量中装可以装满的金币,用它的装载量去乘金币的价值比,就是所获得的金币的量;
代码如下:
#include<bits/stdc++.h>
using namespace std;
struct node
{
int value;
int weight;
double cp;//cost performence性价比
}coin[110];
bool cmp(node x,node y)
{
return (x.cp>y.cp);
}
int main()
{
int n,t;
cin>>n>>t;
for(int i=0;i<n;i++)
{
scanf("%d %d",&coin[i].weight,&coin[i].value);
coin[i].cp=(double)coin[i].value/coin[i].weight;//类型转换
}
sort(coin,coin+n,cmp);//性价比降序排序
double sum=0;
for(int i=0;i<n;i++)
{
if(t>=coin[i].weight)
{
sum+=coin[i].value;
t-=coin[i].weight;
}
else
{
sum+=t*coin[i].cp;
break;//不要忘记break
}
}
printf("%.2f",sum);
return 0; }
洛谷P2240 【深基12.例1】部分背包问题(经典模板)的更多相关文章
- P2240 【深基12.例1】部分背包问题
P2240 [深基12.例1]部分背包问题 题目描述 阿里巴巴走进了装满宝藏的藏宝洞.藏宝洞里面有 N(N \le 100)N(N≤100) 堆金币,第 ii 堆金币的总重量和总价值分别是 m_i,v ...
- 洛谷P4095||bzoj3163 [HEOI2013]Eden 的新背包问题
https://www.luogu.org/problemnew/show/P4095 不太会.. 网上有神奇的做法: 第一种其实是暴力(复杂度3e8...)然而可以A.考虑多重背包,发现没有办法快速 ...
- 洛谷 P2240 数的计数数据加强版
P2240 数的计数数据加强版 题目背景 无 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1500001),然后对此自然数按照如下方法进行处理: ...
- 洛谷 P1387 最大正方形 【dp】(经典)
题目链接:https://www.luogu.org/problemnew/show/P1387 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入格式: 输入 ...
- 洛谷 P1057 传球游戏 【dp】(经典)
题目链接:https://www.luogu.org/problemnew/show/P1057 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游 ...
- 洛谷P3809 后缀排序【后缀数组】【模板】
题目背景 这是一道模板题. 题目描述 读入一个长度为 nn 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置.位置编 ...
- 洛谷2014 选课(树形DP)树形背包问题
题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有一 ...
- 洛谷P2918 [USACO08NOV]买干草(一道完全背包模板题)
题目链接 很明显的一道完全背包板子题,做法也很简单,就是要注意 这里你可以买比所需多的干草,只要达到数量就行了 状态转移方程:dp[j]=min(dp[j],dp[j-m[i]]+c[i]) 代码如下 ...
- 洛谷P2634 [国家集训队]聪聪可可 点分治模板
题意 在一棵树上任意选两个点,求它们距离模3为0的概率. 分析 树分治模板 Code #include<bits/stdc++.h> #define fi first #define se ...
随机推荐
- Codeforces 888E:Maximum Subsequence(枚举,二分)
You are given an array a consisting of n integers, and additionally an integer m. You have to choose ...
- Java的发展简史
Java是由Sun Microsystems公司(简称Sun公司)于1995 年 5 月推出的 Java程序设计语言和Java平台的总称.Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语 ...
- 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变
查看本章节 查看作业目录 需求说明: 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变 当用户单击"+" ...
- 编写Java程序,定义一个类似于ArrayList集合类
返回本章节 返回作业目录 需求说明: 设计一个类似于ArrayList的集合类ListArray. ListArray类模拟实现动态数组,在该类定义一个方法用于实现元素的添加功能,以及用于获取List ...
- Error: Cannot find module '@dcloudio/uni-cli-i18n' 解决方案
这个错误是因为node_modules缺少了 '@dcloudio/uni-cli-i18n' 以下是错误信息 解决方案: yarn add -D @dcloudio/uni-cli-i18n ...
- vim 个性化设置
vim 编辑器安装 yum install vim vim个性化设置 vim ~/.vimrc 复制以下代码 关闭vim一致性原则 set nocompatible 显示行号 set number 设 ...
- 简单的 Shell 脚本入门教程
Shell脚本 运作方式与解释型语言相当,如果有语言基础,学起 Shell 脚本就非常容易,但是 Shell 与常见的语言不同,一些常见的函数在 Shell 中需要组合一些命令得以实现 工具推荐 Sh ...
- Hadoop编译打包记录
Hadoop编译打包,基于2.7.2版本的源码. # 打包过程中需要使用到的工具 java -version mvn -version ant -version type protoc type cm ...
- Python项目生成requirements.txt文件及pip升级问题解决及流程
缘由:新项目使用Python, PC上的python包不全,需要通过requirements.txt文件指定安装所需包 pip安装遇到一些坑 一.直接使用pip包管理工具生成requirements. ...
- OAuth2.0的定义
1. 什么是OAuth2.0 * 用于REST/APIs的代理授权框架(delegated authorization) * 基于令牌Token的授权,在无需暴露用户密码的情况下,使应用能获取对用户数 ...