[USACO10FEB]购买巧克力Chocolate Buying 【假背包真贪心】 By cellur925
继续dp刷题计划,看到这道题,第一眼感觉不就是显然的完全背包嘛。把背包打完要开始填充数组大小的时候成为了mengbier,发现数据极大,达到了1e18.显然这不是一道平凡的背包题目。
于是看了题解。wtf?这题是贪心???
emmm冷静分析:首先我们比较背包模型和这个模型,背包花费这一定的体积,那些价值一定会获得。而这个模型中,我们每花费一定的钱(体积),却只能满足一只奶牛。这是本题的关键。
那么就很难继续满足完全背包的性质了。
真想用背包?看到讨论里有人说如果这题写背包,那也得是多重背包,用二进制拆分物品。况且本题数据范围还这么大,1e18也拆不下。
所以还是老老实实贪心吧== 先把巧克力按价值从小到大排序,每次尽量选择小的巧克力价值。因为尽量选择了小的巧克力会给其他后面喜欢昂贵的奶牛留下希望。这就是很裸的贪心了。
感觉本题被打到普及/提高-的难度还是因为思维的惯性吧,看起来是背包就直接打了==
Code
#include<cstdio>
#include<algorithm> using namespace std;
typedef long long ll; int n;
ll ans,pur,B;
struct Chocolate{
ll v,w;
}p[]; bool cmp(Chocolate x,Chocolate y)
{
return x.v<y.v;
} int main()
{
scanf("%d%lld",&n,&B);
for(int i=;i<=n;i++)
scanf("%lld%lld",&p[i].v,&p[i].w);
sort(p+,p++n,cmp);
for(int i=;i<=n;i++)
{
/* if(pur+p[i].v>B) break;
//printf("%lld\n",pur);
pur+=p[i].v*p[i].w;
ans+=p[i].w;
while(pur>B)
ans--,pur-=p[i].v;*/
if(B/p[i].v<p[i].w)
{
ans+=B/p[i].v;
break;
}
B-=p[i].v*p[i].w;
ans+=p[i].w;
}
printf("%lld",ans);
return ;
}
[USACO10FEB]购买巧克力Chocolate Buying 【假背包真贪心】 By cellur925的更多相关文章
- 洛谷——P2983 [USACO10FEB]购买巧克力Chocolate Buying
P2983 [USACO10FEB]购买巧克力Chocolate Buying 题目描述 Bessie and the herd love chocolate so Farmer John is bu ...
- 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying 题解
P2983 [USACO10FEB]购买巧克力Chocolate Buying 题目描述 Bessie and the herd love chocolate so Farmer John is bu ...
- 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying
购买巧克力Chocolate Buying 乍一看以为是背包,然后交了一个感觉没错的背包上去. #include <iostream> #include <cstdio> #i ...
- 洛谷P2983 [USACO10FEB]购买巧克力Chocolate Buying
题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Sto ...
- P2983 [USACO10FEB]购买巧克力Chocolate Buying
题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Sto ...
- 【洛谷】P2983 [USACO10FEB]购买巧克力Chocolate Buying(贪心)
题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Sto ...
- 洛谷—— P2983 [USACO10FEB]购买巧克力Chocolate Buying
https://www.luogu.org/problem/show?pid=2983 题目描述 Bessie and the herd love chocolate so Farmer John i ...
- [USACO10FEB]购买巧克力Chocolate Buying
题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Sto ...
- [luoguP2983] [USACO10FEB]购买巧克力Chocolate Buying(贪心)
传送门 按价格排序后贪心 ——代码 #include <cstdio> #include <iostream> #include <algorithm> int n ...
随机推荐
- nextSibling和previousSibling
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- Hibernate - DetachedCriteria 的完整用法(转)
现在对 Hibernate的Criteria 的用法进行总结: Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供了 Crite ...
- JAVA WEB学习笔记(一):JDK的安装及环境变量的配置
一.JDK的安装. JDK可以在Oracle(甲骨文)的官网下载,连接地址:http://www.oracle.com/technetwork/java/javase/downloads/index- ...
- Linux fork函数具体图解-同一时候分析一道腾讯笔试题
原创blog.转载请注明出处 头文件: #include<unistd.h> #include<sys/types.h> 函数原型: pid_t fork( void); (p ...
- hadoop mapred和mapreduce包
mapred包是老的1.0的map reduce api mapreduce包是新的2.0的map reduce api
- kbmMemTable关于内存表的使用,以及各种三层框架的评价
关于内存表的使用(kbmMemTable) 关于内存表的使用说明一. Delphi使用内存表1.1 Delphi创建内存表步骤:1. 创建一个Ttable实例.2. 设置一个DataBaseName为 ...
- [树套树]K大数查询
有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少.为了 ...
- chan
第一单元:分型.笔.线段 ?1 分型 一.分型.笔和线段所属范畴 缠师在<教你炒股票72:本ID已有课程的再梳理>中对缠论做过这样的说明“本ID的理论,本质上分两部分,一是形态学,二是动 ...
- 【转载】Android Studio简单设置
界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Theme ,选择 Darcula 主题即可 ...
- codeforces 691F F. Couple Cover(组合计数)
题目链接: F. Couple Cover time limit per test 3 seconds memory limit per test 512 megabytes input standa ...