洛谷 P2983 [USACO10FEB]Chocolate Buying S

news2024/10/10 6:20:00

这题其实不难,但时间复杂度是大难点

题目描述

Bessie and the herd love chocolate so Farmer John is buying them some.

The Bovine Chocolate Store features N (1 <= N <= 100,000) kinds of chocolate in essentially unlimited quantities. Each type i of chocolate has price P_i (1 <= P_i <= 10^18) per piece and there are C_i (1 <= C_i <= 10^18) cows that want that type of chocolate.

Farmer John has a budget of B (1 <= B <= 10^18) that he can spend on chocolates for the cows. What is the maximum number of cows that he can satisfy? All cows only want one type of chocolate, and will be satisfied only by that type.

Consider an example where FJ has 50 to spend on 5 different types of chocolate. A total of eleven cows have various chocolate preferences:

Chocolate_Type Per_Chocolate_Cost Cows_preferring_this_type 1 5 3

2 1 1

3 10 4

4 7 2

5 60 1

Obviously, FJ can't purchase chocolate type 5, since he doesn't have enough money. Even if it cost only 50, it's a counterproductive purchase since only one cow would be satisfied.

Looking at the chocolates start at the less expensive ones, he can * purchase 1 chocolate of type #2 for 1 x 1 leaving 50- 1=49, then * purchase 3 chocolate of type #1 for 3 x 5 leaving 49-15=34, then * purchase 2 chocolate of type #4 for 2 x 7 leaving 34-14=20, then * purchase 2 chocolate of type #3 for 2 x 10 leaving 20-20= 0.

He would thus satisfy 1 + 3 + 2 + 2 = 8 cows.

贝西和其他奶牛们都喜欢巧克力,所以约翰准备买一些送给她们。奶牛巧克力专卖店里

有N种巧克力,每种巧克力的数量都是无限多的。每头奶牛只喜欢一种巧克力,调查显示,

有Ci头奶牛喜欢第i种巧克力,这种巧克力的售价是P。

约翰手上有B元预算,怎样用这些钱让尽量多的奶牛高兴呢?

输入格式

* Line 1: Two space separated integers: N and B

* Lines 2..N+1: Line i contains two space separated integers defining chocolate type i: P_i and C_i

输出格式

* Line 1: A single integer that is the maximum number of cows that Farmer John can satisfy

输入输出样例

输入 #1

5 50
5 3 
1 1 
10 4 
7 2 
60 1 

输出 #1

8 

 

万恶的贝西(bushi) 

其实真的没什么知识点,纯纯贪心

上代码:

# include <iostream>
# include <cstdio>
# include <algorithm> 
using namespace std;
# define int long long
int n,b;
struct node{
	int p,c;
}a[100005];
bool cmp(node x,node y){
	return x.p<y.p;
}
signed main(){
	scanf("%lld%lld",&n,&b);
	for (int i=1;i<=n;i++){
		scanf("%lld%lld",&a[i].p,&a[i].c);
	}
	sort(a+1,a+1+n,cmp);
	int i=1,cnt=0;
	while(b){
		if (b>=a[i].p*a[i].c){
			b-=(a[i].p*a[i].c);
			cnt+=a[i].c;
		}else{
			int now=b/a[i].p;
			cnt+=now;
			b=0;
		}
		i++;
	}
	printf("%lld",cnt);
	return 0;
}

?你不会看到这里就把代码复制走了吧

nonono

你会得到这样的结果

那到底是为什么呢?注意看题目中pi的取值范围

小于等于10^18!?

long long根本吃不消的好吧

所以要上我们的unsigned long long

真AC代码

# include <iostream>
# include <cstdio>
# include <algorithm> 
using namespace std;
# define int unsigned long long
int n,b;
struct node{
	int p,c;
}a[100005];
bool cmp(node x,node y){
	return x.p<y.p;
}
signed main(){
	scanf("%lld%lld",&n,&b);
	for (int i=1;i<=n;i++){
		scanf("%lld%lld",&a[i].p,&a[i].c);
	}
	sort(a+1,a+1+n,cmp);
	int i=1,cnt=0;
	while(b){
		if (b>=a[i].p*a[i].c){
			b-=(a[i].p*a[i].c);
			cnt+=a[i].c;
		}else{
			int now=b/a[i].p;
			cnt+=now;
			b=0;
		}
		i++;
	}
	printf("%lld",cnt);
	return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络电缆有哪些类型,网络工程师必知!

在 21 世纪&#xff0c;理想的目标是完全消除网络电缆的使用&#xff0c;并生活在一个一切都以无线方式管理的世界中。没有电缆的困扰&#xff0c;管理服务器会容易得多&#xff0c;我们也不必浪费时间标记和跟踪数百条电缆。 在那个时候到来之前&#xff0c;我们一直坚持使用…

F623光猫超级管理员密码获取

中兴F623光猫超级管理员密码获取 ⚠️事前说明 如果你不熟悉光猫的操作&#xff0c;请勿修改或拆解任何与光猫有关的命令、零件、网线等。操作有风险&#xff0c;运行需谨慎。 光猫型号&#xff1a;ZXHN F623 所属运营商&#xff1a;中国移动 硬件版本号&#xff1a;V6.0 …

算法刷题打卡第77天:解密消息

解密消息 难度&#xff1a;简单 给你字符串 key 和 message &#xff0c;分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下&#xff1a; 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐&#xff0c;…

模型量化I—基础概念

最近接了个模型量化的任务&#xff0c;读了几篇比较新的论文&#xff0c;并跑通了几个模型。因为第一次接触这个领域&#xff0c;没有理论基础打底&#xff0c;直接读“大成”性的论文&#xff0c;常常有种云山雾罩的感觉&#xff0c;如空中楼阁&#xff0c;不知道每个结论的来…

java常用类: String,StringBuffer和StringBuilder

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录String介绍String创建细节String s…

转投高通平台,大众展露主导自动驾驶的野心

/ 导读 /2022年&#xff0c;英特尔几乎以亏本的价格推动Mobileye上市&#xff0c;成为市场上的一大看点。出现这种情况的原因&#xff0c;除了整个美国自动驾驶大环境不好&#xff0c;和Mobileye接连失去几个大客户不无关系。其中尤以大众这样体量的客户对于Mobileye的影响最为…

Ubuntu 系统如何以 root 用户SSH登录实例

文章目录前言总结前言 出了点小插曲&#xff0c;心情烦躁&#xff0c;搞得Ubuntu都连不上了&#xff0c;心态炸裂。 不过后面冷静下来以后还是找到了解决办法&#xff0c;可以用ssh成功连上root权限的Ubuntu。 因为很少接触Ubuntu&#xff0c;所以不知道即使root的密码正确…

09技术太卷我学APEX-定制页面及导航菜单权限

09技术太卷我学APEX-定制页面及导航菜单权限 0 始终没搞明白APEX的角色如果分配页面的权限&#xff0c;只能自己定制一个 APEX现学现卖开发了个《5217仓库管理》&#xff0c;功能在春节前就搞定了&#xff0c;卡在对页面的权限控制&#xff0c;经过翻阅牛人的博客&#xff0c…

使用vue3,vite,less从零开始学习硅谷外卖.docx

严正声明&#xff01; 重要的事情说三遍&#xff0c;本文章仅供分享&#xff0c;文章和代码都是开源的&#xff0c;严禁以此牟利&#xff0c;严禁侵犯尚硅谷原作视频的任何权益&#xff0c;我知道学习编程的人各种各样的心思都有&#xff0c;但这不是你对开源社区侵权的理由&am…

读书:《高效的秘密》

#《高效的秘密》的作者是《纽约时报》商业调查记者查尔斯都希格&#xff0c;他的另一本畅销书是《习惯的力量》。 高效不是超额工作、拼命工作&#xff0c;甚至牺牲自己的个人生活。高效的秘密取决于你做选择的方式。 一、激发动力&#xff0c;重新审视效率产生的源头 掌控力…

1.7 Cubemx STM32F429_RTX FATFS 库函数讲解(三)

文章目录1、打开文件夹2、读取文件夹3、打开\新建一个文件5、读取文件1、打开文件夹 FRESULT f_opendir ( DIR* DirObject, /* Pointer to the blank directory object structure */ const TCHAR* DirName /* Pointer to the directory name */ ) 函数说明: 此函数可以打开…

React中如何使用Mobx

一、Mobx前端状态管理框架 基础概念&#xff1f; 1. 什么是Mobx Mobx是一个简单、可扩展的状态管理库 2. 什么是状态管理&#xff1f; 状态管理就是将分布在各个组件、各个模块中的状态的变化&#xff0c;按照一定的规则&#xff0c;进行统一的管理。 3. 为什么需要状态管…

NX二开ufun函数创建块/基准平面/凸台/垫块/腔体

本节主要讲述通过ufun函数直接创建块、基准平面、凸台、垫块、腔体&#xff0c;涉及ufun函数如下&#xff1a; 1、创建块 UF_MODL_create_block 2、创建基准平面 UF_MODL_create_fixed_dplane 3、创建凸台 UF_MODL_create_boss 4、创建垫块 UF_MODL_create_rect_pad5 5、创…

聊聊如何成为更好的架构师?

之前有小伙伴咨询架构方向需要学习什么&#xff0c;需要什么技术储备&#xff0c;今天就来深入聊聊这个话题。 就此探讨下必备技能、经验&#xff0c;以及储备相关知识所需的时间和精力。除此之外&#xff0c;我也回顾了自己走过的路、使用或尝试过的技术&#xff0c;以及我从…

开学季,送什么给小学生实用?学生最实用的护眼好物

伴随着“立春”&#xff0c;又到新的春季开学季&#xff0c;不管是家长还是孩子面对每个学期的循环&#xff0c;每一次都有新的故事和发现&#xff0c;很快就要开学了&#xff0c;给学生的小礼物准备好了吗&#xff0c;作为父母、长辈送给孩子最好的礼物&#xff0c;我认为莫过…

大数据舆情分析软件实时监控,TOOM大数据处理与舆情监控简介

舆情数据分析处理是指通过使用大数据技术、人工智能、自然语言处理等&#xff0c;从舆情数据中提取信息&#xff0c;进行模型建立、模式识别、情感分析等&#xff0c;从而了解舆论情况。舆情数据分析处理的目的是了解舆论趋势、话题热点、网民情绪等&#xff0c;从而便于企业、…

中国电子学会2022年03月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

分数&#xff1a;100 题数&#xff1a;24 一、单选题(共10题&#xff0c;共30分) 1. 由1,2,3,4,5,0这六个数字经过排列组合能够组成多少个六位数偶数&#xff1f;注意&#xff1a;每一位都不相同&#xff0c;最高位不能为0。&#xff08; &#xff09; A. 720 B. 360 C. …

动态规划Dynamic Programming的基础解法

本文是对Jeff Erickson经典算法入门书籍《Algorithms》中动态规划问题的阅读笔记&#xff0c;近期在刷一些编程题&#xff0c;对于如何凑出动态规划更新的范式&#xff0c;脑袋里一直是一团乱麻&#xff0c;特别看完了别人的题解&#xff0c;只是惊叹其脑洞&#xff0c;但一直搞…

分页数据渲染

SearchResult属性增加 增加属性 private List<Integer> pageNavs; 目的&#xff1a;产生分页效果&#xff0c;方便操作&#xff0c;navs记录了从1到总页数的暑假 不是第一页时显示上一页 <a class"page_a" th:attr"pn${result.pageNum - 1}" hre…

算法基础集训(第30天)------>DFS之经典【n皇后问题】

一&#xff1a;概念定义n−皇后问题是指将 n个皇后放在 nn的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。二&#xff1a;题目描述n−皇后问题是指将 n个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇…