贪心算法——部分背包(洛谷 P2240)
贪心算法——部分背包问题
部分背包问题,顾名思义,部分 就是可以取一部分,也就是可以随意拆分的物品,是最简单经典的贪心问题。
解题步骤:
1)用结构体数组保存每个物品的价值及总重量、平均价值;
2)输入数据同时计算每种物品的平均价值;
3)使用自定义的cmp函数以及自带的sort函数将结构体进行排序;
4)循环遍历从最大平均价值开始放入背包,能放肯定是全部放,不能放就放背包剩余重量;
5)最后控制格式输出即可!
题目描述
阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N(N \le 100)N(N≤100) 堆金币,第 ii 堆金币的总重量和总价值分别是 m_i,v_i(1\le m_i,v_i \le 100)mi,vi(1≤mi,vi≤100)。阿里巴巴有一个承重量为 T(T \le 1000)T(T≤1000) 的背包,但并不一定有办法将全部的金币都装进去。他想装走尽可能多价值的金币。所有金币都可以随意分割,分割完的金币重量价值比(也就是单位价格)不变。请问阿里巴巴最多可以拿走多少价值的金币?
输入格式
第一行两个整数 N,TN,T。
接下来 NN 行,每行两个整数 m_i,v_imi,vi。
输出格式
一个实数表示答案,输出两位小数
输入输出样例
输入 #1
4 50 10 60 20 100 30 120 15 45
输出 #1
240.00
解题代码:
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string>
#include<algorithm>
using namespace std;
struct albb{int m;int v;double avg;
}al[101];
bool cmp(albb a,albb b){return a.avg>b.avg;
}
int main(){int n,t;cin>>n>>t;for(int i=0;i<n;i++){scanf("%d%d",&al[i].m,&al[i].v);al[i].avg = 1.0 * al[i].v/al[i].m;}sort(al,al+n,cmp);double ans,weight=0;for(int i=0;i<n;i++){if(weight + al[i].m <= t){weight += al[i].m;ans += al[i].v;}else{ans += al[i].avg * (t-weight);break;}}printf("%.2lf\n",ans);return 0;
}
贪心算法——部分背包(洛谷 P2240)相关推荐
- 洛谷P2240木材加工
题目链接 洛谷P2240 题目描述 木材厂有 n根原木,现在想把这些木头切割成 k 段长度为l的小段木头(木头有可能有剩余). 当然,我们希望得到的小段木头越长越好,请求出 l的最大值. 木头长度的单 ...
- 深入理解 操作系统 SJF算法(以洛谷P1223题为例)
CPU Scheduling Algorithms 重要的CPU调度算法如下: FCFS Scheduling(First-Come, First-Served) SJF Scheduling(Sho ...
- 深入理解 操作系统 LRU算法(以洛谷P1540题为例)
LRU算法 LeastRecentlyUsedLeast Recently UsedLeastRecentlyUsed 算法,意为"最近最少使用",这是操作系统内存管理部分重要的一 ...
- 贪心算法 0-1背包c语言,贪心算法0-1背包问题(算法实验代码).pdf
. 实验三. 0-1 背包问题(贪心算法) 实验代码: #include int max(int a,int b) { if(a>b) return a; else return b; } vo ...
- (快速幂算法+高精度)洛谷P1045 麦森数
前言 故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...
- 图论算法——幻象迷宫(洛谷 P1363)
题目选自洛谷P1363 大概就是说给出一个01迷宫类的地图,按照这个地图来扩展新地图,类似这样 然后问你是不是###可以走无限远. ###那么,我们可以很清晰的意识到,如果可以从点(x,y)出发,达到 ...
- KMP算法小总结 洛谷P3375 【模板】KMP字符串匹配
提问:这里有一个长度为n的字符串str1和长度为m的字符串str2(n > = m),问在str1中str2出现了几次? 如果使用暴力求解,一个一个比较,在n和m都极大的情况下将花费非常多的不必 ...
- P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)
题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...
- 【P2774】方格取数问题(贪心+最大流,洛谷)
首先,我们要读懂这道题,否则你会和我一开始产生一样的疑问,把所有的数都取走剩下一个最小的不就可以了么???然后我们发现样例完全不是这么回事.题目中所说的使相邻的两个数没有公共边,是指你去走的数,也就是 ...
最新文章
- 黑马程序员 交通灯案例
- C指针原理(2)-ATT汇编
- 项目复审——Beta阶段
- MySQL count()函数
- 基于jQuery焦点图片新闻代码(JS+CSS)
- cf319.B. Modulo Sum(dp 鸽巢原理 同余模)
- 超像素分割算法(SLIC)
- 软件著作权申请流程(2021版)
- 电脑蓝屏0x0000006B不重装系统的解决办法
- 颜色的原理,三基色原理以及HLS(色相、亮度、饱和度)原理
- 常规的Git管理流程
- AtoZ CSS快速提示:对文本使用OpenType
- 【Linux学习笔记】38:有关Linux进程家族树
- 基于 STM32 和 NB-IoT 的可穿戴式老人防摔监测系统
- JS逆向之补环境过瑞数详解
- 没错,我们和美帝的差距就是这么大!
- 孔雀优化算法(Peafowl (Pavo Muticus/Cristatus) Optimization Algorithm, POA)
- 西门子S7-200PLC的自锁
- c语言试卷分析报告范文,c语言试卷分析
- 实用Word使用技巧大全
热门文章
- 软件测试 学习之路 基本介绍
- web前端之css快速入门
- raspberry pi_Linux Foundation安全徽章,Raspberry Pi成功,白宫工具等
- 前端:常用单词(专业版)
- Bootstrap3 行内文本样式
- 视觉SLAM十四讲学习笔记-第一讲
- 视觉SLAM笔记(6) 坐标系
- ROS笔记(4) RoboWare Studio 的安装
- python做日历牌_中秋节到了,送你一个Python做的Crossin牌“月饼”
- linux mysql 修改密码之后还是不能登录_怎样在Linux下搭建接口自动化测试平台?...