捡苹果(贪心加背包)
题目如下:
以前,有个神秘的院子里面有三种苹果,每个苹果的数量是无限的。有一个小姑娘带了一个大袋子来到院子,她从来没见过这么多的苹果。每种苹果都有大小以及出售的价格,小姑娘想获得最大的利润,但是她不知道怎么才能做到。于是她来向你寻求帮助,你能告诉她能获得的最大价值吗?
第一行一个整数T(T <= 50),表示测试数据的组数。
每组测试数据有四行组成,前三行每行有两个整数S和P,分别表示每种苹果的大小(1 <= S <= 100)和价格(1 <= P <= 10000)
第四行有一个整数V(1 <= V <= 100,000,000)表示小姑娘袋子的大小。
刚看到这个题以为是完全背包,但是看完数据量之后看到背包大小为100000000,所以这个题肯定是不止要用完全背包就可以解决。然后就行到了贪心方法,先将大部分背包用性价比最高的方式填满,然后剩下的在使用完全背包求取最优值,此时的计算结果就可以将背包的价值最大化。
#include<iostream>
using namespace std;
#define ll long long
#include<algorithm>
#include<cstring>struct node
{ll x,y;double z;bool operator<(const node &q) const{return z>q.z;}
} a[4];
ll dp[1001];
int main()
{ll t;cin>>t;for(ll o=1; o<=t; o++){memset(dp,0,sizeof dp);for(int i=1; i<=3; i++){cin>>a[i].x>>a[i].y;a[i].z=(double)((double)a[i].y/(double)a[i].x);}sort(a+1,a+4);ll sum=0;ll bag;cin>>bag;if(bag>1000){sum+=((bag-1000)/a[1].x+1)*a[1].y;bag-=((bag-1000)/a[1].x+1)*a[1].x;}for(int i=1; i<=3; i++)for(int j=a[i].x; j<=bag; j++)dp[j]=max(dp[j],dp[j-a[i].x]+a[i].y);cout<<"Case "<<o<<": "<<sum+dp[bag]<<endl;}
}
捡苹果(贪心加背包)相关推荐
- 王者荣耀android加ios好友,王者荣耀安卓和苹果能加好友吗 安卓和ios怎么加好友...
王者荣耀跨系统互通又开启了,也就是说安卓可以和苹果一起玩了,不过微信和QQ区仍然无法互通,这个预计也不会开放,那么安卓和苹果能加好友吗?能的话怎么加好友?琵琶网小编接下来就给大家分享一下相关资讯. 王 ...
- 苹果6s上市时间_iPhone 12 销量火爆,苹果紧急加单
原标题:iPhone 12 销量火爆,苹果紧急加单 iPhone 12 从预售到上市销售的情况来看,今年的新 iPhone 相当受欢迎,Apple Store 每天挤满了体验新 iPhone 的用户, ...
- 防丢背包层出不穷,Swissdigital design 苹果Find My背包
防丢背包层出不穷,Swissdigital design 苹果Find My背包 前不久配件制造商Targus发布支持苹果Find My的背包,这款背包配备了一个小型跟踪模块,可以在iPhone.iP ...
- 捡苹果(背包+贪心)
http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=4811 Description 以前,有个神秘的院子里面有三种苹果,每个苹果的数量是无限的.有一 ...
- hdu 2546 饭卡【贪心+01背包基础题】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2546 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- NYOJ 289 苹果(01背包)
苹果 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. 输 ...
- 栈的应用--马踏棋盘-贪心加栈
问题描述 问题牵引: 1.为什么用数组来作为栈的实现,而不是动态分配,指针加减? 2.directionNext和count数组起了什么作用?是如何实现的? 3.为什么需要while(1)?它是如何起 ...
- Codeforces 913 二进制背包(柠檬水) 暴力贪心特殊背包(选题)
A B C 给你N(N<=30)种水瓶每种水瓶有无限个 每个的体积是2^(i-1)价格是cost[i] 要求你花最少的钱弄出L体积的水 先从前到后扫一遍cost[i+1]=min(cost[i+ ...
- Asia Yokohama Regional Contest 2018 K题 - Sixth Sense(思维加贪心加二分)
https://codeforces.com/gym/102082 题意 两个人玩n轮游戏,每次两个人各取一个数,并且已知对手的取数顺序,如果你取的数比他大就算赢一轮,求能赢最多轮次的取法,如果有多种 ...
最新文章
- 1930年的上海是什么样
- [翻译] C# 3.0语言规范 收藏
- 可编程CDN – EdgeScript应用场景、语言速览和实操演示
- 【Flink】Flink 写入 MySQL主键冲突 默认Upsert策略
- 【mac】Mac 安装Brew命令
- 华为荣耀7能改成Linux吗,华为荣耀7电池怎么样?华为荣耀7可以更换电池吗?
- Ranorex中Global变量的使用
- thymeleaf学习笔记
- 基于Yolov5目标检测的物体分类识别及定位(二) -- yolov5运行环境搭建及label格式转换
- 微软商店下载显示错误,win11无法下载更新的解决方法
- EDEM 2020的安装
- IE假死-在地址栏输入URL地址弹出新窗口的解决方法
- TopCoder 规则入门
- Oracle 官网共享账号
- 计算该年该月该日天数 一年中有 12 个月,而每个月的天数是不一样的。其中大月 31 天,分别为 1,3,5,7,8,10,12 月,小月 30 天,分别 为 4,6,9,11 月。
- 23、Numpy IO
- python查找中间值
- 窒息操作:AtCoder Regular Contest 152 A-Seat Occupation
- windows二维码工具3.0
- bulk插入 es_Elasticsearch 使用bulk批量导入数据