首页 > 编程语言 >P2240 【深基12.例1】部分背包问题(C/C++)

P2240 【深基12.例1】部分背包问题(C/C++)

时间:2023-11-19 10:31:31浏览次数:40  
标签:背包 jinbi int double sum 深基 P2240 C++

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

P2240 【深基12.例1】部分背包问题(C/C++)_i++

先把物品按照单位重量的价值降序排序,然后依次装入背包。 如果背包容量不小于当前要装的物品重量,就全部装入,如果小于,那就剩余多少容量就装多少容量的当前物品。

#include<bits/stdc++.h>
using namespace std;

struct jinbi{
	double m;
	double v;
}a[110];

bool cmp(jinbi x,jinbi y)
{
	return x.v/x.m>y.v/y.m;
}

int main()
{
	int n,t;
	double sum=0;
	cin >> n >> t;
	for(int i=0;i<n;i++)
	{
		cin >> a[i].m >> a[i].v ;
	}
	sort(a,a+n,cmp);
	for(int i=0;i<n;i++)
	{
		if(t>=a[i].m)
		{
			sum+=a[i].v;
			t-=a[i].m;
		}
		else 
		{
			sum+=t*a[i].v/a[i].m;
			break;
		}
	}
	printf("%.2lf",sum);
	return 0;
}

标签:背包,jinbi,int,double,sum,深基,P2240,C++
From: https://blog.51cto.com/u_16342340/8470506

相关文章

  • C/C++ 获取主机网卡MAC地址
    MAC地址(MediaAccessControladdress),又称为物理地址或硬件地址,是网络适配器(网卡)在制造时被分配的全球唯一的48位地址。这个地址是数据链路层(OSI模型的第二层)的一部分,用于在局域网(LAN)中唯一标识网络设备。获取网卡地址主要用于网络标识和身份验证的目的。MAC地址是一个唯一的硬件......
  • C++默认参数实现原理分析
    简介定义C++默认参数指的是当函数调用中省略了实参时自动使用的一个值。写法如下:voidfoo(inta=1){}voidfoo(inta,intb=1,intc=1){}默认参数有两个规则,规则一:从第一个出现默认参数的参数开始,后面的参数必须也指定默认参数voidfoo(inta=1,intb,intc=1......
  • Code-C++-字符串分割
    Code-C++-字符串分割转自【C++中string如何实现字符串分割函数split()——4种方法-CSDNApp】http://t.csdnimg.cn/8iWb7stringstreamgetline()stringfind()substr()ccharstrtok()strtok_r()regex_token_iterator<>getline()voidStringsplit(stringstr,const......
  • c++线程专题
    逐步更新中~~~,参考书籍《C++并发编程实战(第2版)》,不照搬书,只写理解感悟。引入头文件#include<thread>线程启动std::threadt(my_func);若需等待线程执行完毕,才继续之后的代码,用joinif(t.joinable()){t.join();}若不等待,可以分离出去(分离出去的线程被称为守护......
  • C++ Primer学习笔记——第十二章
    第十二章动态内存前言在此之前,我们使用的程序中对象都有着严格定义的生存期:全局对象,在程序启动时分配,在程序结束是销毁。局部自动对象,当进入定义所在程序时创建,在离开块时销毁。局部static对象,在第一次使用前分配,在程序结束时销毁。显然这存在限制,为此C++支持动态分配对......
  • C++ 观察者模式实现
    观察者模式主体(被观察者)通知一个或多个观察者状态改变/数据更新/事件发生。描述C++实现观察者模式有几个要点:观察者都有一个共同的抽象基类Listener,定义了一个纯虚接口OnNotified(),主体调用该接口通知观察者每个观察者ConcreteListener继承自抽象基类Listener,并实现......
  • C/C++ 运用VMI接口查询系统信息
    WindowsManagementInstrumentation(WMI)是一种用于管理和监视Windows操作系统的框架。它为开发人员、系统管理员和自动化工具提供了一种标准的接口,通过这个接口,可以获取有关计算机系统硬件、操作系统和应用程序的信息,以及对系统进行管理和控制的能力。WMI允许通过编程方式查询系......
  • L1-6 吉老师的回归 (15 分)(C/C++)
    输入样例1:51L1-1isaqiandaoproblem.L1-2isso...easy.L1-3isEasy.L1-4isqianDao.Wow,suchL1-5,soeasy.输出样例1:L1-4isqianDao.输入样例2:54L1-1isa-qiandaoproblem.L1-2issoeasy.L1-3isEasy.L1-4isqianDao.Wow,suchL1-5,so!!easy.输出样例......
  • 创建顺序表(C++)
    include<stdio.h>defineMaxSize10 //定义最大长度//创建顺序表typedefstruct{intdata[MaxSize]; //创建数组data用来储存数据元素,并将data的长度设置为MaxSizeintlength; //顺序表的当前长度}SqList;//初始化顺序表voidInitList(SqList&L){for(inti=0;i<......
  • c++日志库-log4cplus
    《log4cplus日志库》1.Preface  log4cplus是一款开源的c++日志库,具有线程安全,灵活,以及多粒度控制的特点;log4cplus可以将日志按照优先级进行划分,使其可以面向程序的调试,运行,测试,后期维护等软件全生命周期;可以通过配置,选择将日志输出到屏幕,文件,NTeventlog,甚至是远程服务器......