P2240 【深基12.例1】部分背包问题

题目描述

阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N(N \le 100)N(N≤100) 堆金币,第 ii 堆金币的总重量和总价值分别是 m_i,v_i(1\le m_i,v_i \le 100)m**i,v**i(1≤m**i,v**i≤100)。阿里巴巴有一个承重量为 T(T \le 1000)T(T≤1000) 的背包,但并没办法将全部的金币都装进去。他想装走尽可能多价值的金币。所有金币都可以随意分割,分割完的金币重量价值比(也就是单位价格)不变。请问阿里巴巴最多可以拿走多少价值的金币?

输入格式

第一行两个整数 N、T

接下来 N 行,每行两个整数 m_i,v_im**i​,v**i​

输出格式

一个整数表示答案,输出两位小数

输入输出样例

输入 #1

4 50
10 60
20 100
30 120
15 45

输出 #1

240.00
//P2240 【深基12.例1】部分背包问题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int findmax(double*,int); int main()
{
int mass[102];
int money[102];
double rate[102];
int number,mass_sum,max,count;//count用于避开背包空间没用完的情况
double sum=0.0;
int i=0;
scanf("%d%d",&number,&mass_sum);
for(i=0;i<number;i++){
scanf("%d%d",&mass[i],&money[i]);
rate[i]=(double)money[i]/(double)mass[i];//坑点1:强制转换,否则无法AC
}
count=number;
while(mass_sum>0&&count>0){//坑点2:背包空间没用完,所以需要加count判断条件
max=findmax(rate,number);
if(mass_sum-mass[max]>=0){
mass_sum-=mass[max];
sum+=money[max];
}
else{
sum=sum+mass_sum*rate[max];
mass_sum=0;
break;
}
count--;
rate[max]=0.0;
}
printf("%.2lf",sum);
return 0;
} int findmax(double* rate,int num){
int i=0,tag=0;
double max=0.0;
for(i=0;i<num;i++){
if((rate[i]-max)>=1e-6){
max=rate[i];
tag=i;
}
}
return tag;
}

坑点两个:

一个是强制转换的坑,可过数据为0个,第二个是背包空间没用完,可过80%的数据

//强制转换具体影响
#include <stdio.h> int main()
{
int a=5;int b=2;
double c,d;
c=a/b;
d=(double)a/(double)b;
printf("%lf %lf",c,d);
return 0;
}

输出

2.000000 2.500000

P2240 【深基12.例1】部分背包问题的更多相关文章

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

    首先应该注意几个关键信息:装走尽多的金币.所有金币可以随意分割并且分割后金币的价值比不变; 我们可以抽象成一个买东西的场景,给你一定数目的钱,让你在这些钱内尽量在超市买更多的小零食,这就牵扯到了一个性 ...

  2. P4715 【深基16.例1】淘汰赛

    P4715 [深基16.例1]淘汰赛 题目描述 有 2^n(n≤7) 个国家参加世界杯决赛圈且进入淘汰赛环节.我经知道各个国家的能力值,且都不相等.能力值高的国家和能力值低的国家踢比赛时高者获胜.1 ...

  3. 【vector+pair】洛谷 P4715 【深基16.例1】淘汰赛

    题目:P4715 [深基16.例1]淘汰赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题因为数据范围不大,所以做法可以非常简单,使用一个vector加上pair就可以了: ...

  4. 洛谷 P5706 【深基2.例8】再分肥宅水

    题目连接: P5706 [深基2.例8]再分肥宅水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 我提交的: 1 #include<iostream> 2 #inclu ...

  5. jzoj4916. 【GDOI2017模拟12.9】完全背包问题 (背包+最短路)

    题面 题解 考场上蠢了--这么简单的东西都想不到-- 首先排序加去重. 先来考虑一下,形如 \[a_1x_1+a_2x_2+...a_nx_n=w,a_1<a_2<...<a_n,x ...

  6. P3613 【深基15.例2】寄包柜

    传送门 题目大意 往一个\(a[i][j]\) 里边放东西,也可以取走东西,然后查询\(a[i][j]\)里边是什么东西. 思路: 显然我们可以暴力,但是你开不了那么大的数组. 翻了翻dalao们的题 ...

  7. P5727 【深基5.例3】冰雹猜想

    链接:Miku -------------------- 欸,为什么我第一遍没过 -------------------- #include<iostream> using namespa ...

  8. 题解 P5718 【【深基4.例2】找最小值】

    题目传送门 思路 介绍一种新方法--sort排序,它的格式是这样的sort(a+1,a+n+1,cmp);,我们只需要把a数组排好序,然后输出第\(1\)个元素即可. 定义a数组与变量\(n\)并输入 ...

  9. 题解 P5712 【【深基3.例4】Apples】

    题目传送门 思路 仔细读题后,我们可以发现,输出可以分成\(2\)种情况,apple加s与apple不加s,所以我们可以使用if/else来实现. 接着,我们读入n. int n; cin>&g ...

随机推荐

  1. 14.java设计模式之命令模式

    基本需求: 一套智能家电,有照明灯.风扇.冰箱.洗衣机,我们只要在手机上安装app就可以控制对这些家电工作 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App分别控制,我们希望只要一个 ...

  2. php数组学习记录01

    array_change_key_case array_change_key_case - 将数组中的所有键名修改为全大写或小写 <?php $input_array = array(" ...

  3. 语音识别2 -- Listen,Attend,and Spell (LAS)

    LAS是Listen(Encoder),Attend,和Spell(Decoder)的简称 第一个步骤Listen(Encoder) listen的作用是输入一段语音信号,输出一段向量,去掉语音中的杂 ...

  4. distinct关键字

    对于distinct关键字,distinct关键字应用于所有列而不仅是前置它的列,如果给出多个列,将会比较两个列. 这是完整表, 首先是select distinct username from us ...

  5. Robot Framework安装和入门

    1:安装 python 安装python并且配置好环境变量 2:安装 Robot Framework pip install robotframework 3:安装GUI界面 pip install ...

  6. Eclipse的环境配置

    1.想要配置Eclipse的环境,就要先下载Eclipse,并安装它,不会下载安装的小伙伴可以点击下面给的链接,里面有我写的详细的教程,这里就不重复了 Eclipse下载与安装:https://blo ...

  7. Mybatis入门及第一个Mybatis程序

    Mybatis笔记整理 所需要的基础知识 JDBC Mysql Java基础 Maven Junit 框架:是有配置文件的.最好的方式:看官网文档 1.简介 1.1.什么是MyBatis 简介 什么是 ...

  8. mq内存映射

    MappedFileQueue的封装 MappedFileQueue是MappedFile的管理容器,MappedFileQueue是对存储目录的封装. 查找MappedFile: 1.根据时间戳来查 ...

  9. InnoDB 中的缓冲池(Buffer Pool)

    本文主要说明 InnoDB Buffer Pool 的内部执行原理,其生效的前提是使用到了索引,如果没有用到索引会进行全表扫描. 结构 在 InnoDB 存储引擎层维护着一个缓冲池,通过其可以避免对磁 ...

  10. Bootstrap Blazor 组件介绍 Table (二)自定义模板列功能介绍

    Bootstrap Blazor 是一套企业级 UI 组件库,适配移动端支持各种主流浏览器,已经在多个交付项目中使用.通过本套组件可以大大缩短开发周期,节约开发成本.目前已经开发.封装了 70 多个组 ...