Supermarket POJ - 1456 (贪心+并查集)

【代码超详解】POJ 1456 Supermarket(贪心 + 并查集) 一、题目描述 二、算法分析说明与代码编写指导 将商品按价格高到低排序。一天只能卖一种未过期的商品,为了使得总利润最大,我们尽量卖出利润更高的商品。此外,能够晚卖的就晚卖,因为如果很早就卖出去的话,可能会导致在卖出去当日过期的高利润商品因过期无法售卖,而在先卖出去的商品过期的那一天又只剩下利润低的商品可卖,导致总利润降低。 其实看这题的时候,可能你很快能想到贪心,但是你未必能想到用并查集处理,不过... 阅读详情

A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment the sale begins. Each product takes precisely one unit of time for being sold. A selling schedule is an ordered subset of products Sell ≤ Prod such that the selling of each product x∈Sell, according to the ordering of Sell, completes before the deadline dx or just when dx expires. The profit of the selling schedule is Profit(Sell)=Σ x∈Sellpx. An optimal selling schedule is a schedule with a maximum profit.
For example, consider the products Prod={a,b,c,d} with (pa,da)=(50,2), (pb,db)=(10,1), (pc,dc)=(20,2), and (pd,dd)=(30,1). The possible selling schedules are listed in table 1. For instance, the schedule Sell={d,a} shows that the selling of product d starts at time 0 and ends at time 1, while the selling of product a starts at time 1 and ends at time 2. Each of these products is sold by its deadline. Sell is the optimal schedule and its profit is 80.
在这里插入图片描述
Input
A set of products starts with an integer 0 <= n <= 10000, which is the number of products in the set, and continues with n pairs pi di of integers, 1 <= pi <= 10000 and 1 <= di <= 10000, that designate the profit and the selling deadline of the i-th product. White spaces can occur freely in input. Input data terminate with an end of file and are guaranteed correct.
Output
For each set of products, the program prints on the standard output the profit of an optimal selling schedule for the set. Each result is printed from the beginning of a separate line.
Sample Input

4  50 2  10 1   20 2   30 1

7  20 1   2 1   10 3  100 2   8 2
   5 20  50 10

Sample Output

80
185

Hint
The sample input contains two product sets. The first set encodes the products from table 1. The second set is for 7 products. The profit of an optimal schedule for these products is 185.

题意描述: 给出一个n然后再给出n组数,每组由p、d两个数组成,分别表示一件物品在1-d天中的价值为p,然后让你求出在这n组数中能产生的最大价值总和sum是多少。

解题思路:按照价值从大到小排序,价值相同按照时间从大到小排序,然后用一个f数组标记这一天是否被占用,首先在初始化f数组时,让f[i]=i;因为如果这一天被占用他只能去前一天,此时只需要让f[i]–;就可以了。

AC代码

#include<stdio.h>
#include<algorithm>
using namespace std;

struct node
{
	int  prod,day;
}p[10010];
 
 bool cmp(node a,node b)
 {
	if(a.prod!=b.prod)
 		return a.prod>b.prod;
 	return a.day>b.day; 
 }
 int f[10010];
 
 void inti(int n)
 {
 	for(int i=0;i<=n;i++)
 		f[i]=i;
 	return ;
 }
 
 int merge(int x)
 {
 	if(f[x]==x)
 		return x;
	 f[x]=merge(f[x]);
	 return f[x];
 }
 
 int main(void)
 {
 	int i,j,n,tx,maxx;
	long long sum;
 	while(~scanf("%d",&n)){
 		sum=0;maxx=0;
 		for( i=0;i<n;i++){
 			scanf("%d%d",&p[i].prod,&p[i].day);
 			maxx=max(maxx,p[i].day);
		 }
 		sort(p,p+n,cmp);
 		inti(maxx);
 		for(i=0;i<n;i++){
 			tx=merge(p[i].day);
 			if(tx>0){//因为天数必须大于0
 				f[tx]--;//表示这一天被占用,只能去前一天了。 
 				sum+=p[i].prod;
			 }
		 }
 		printf("%lld\n",sum);
	 }
	 return 0;
 }
芯片设计数字后仿与SDF文件:原理、流程与实战调试指南 在数字芯片设计流程中,时序验证是确保芯片功能正确与性能达标的核心环节。其原理在于通过精确的物理延迟模型,模拟信号在真实硅片上的传播行为,从而暴露理想仿真中无法发现的时序问题。这项技术的核心价值在于它是连接前端逻辑设计与后端物理实现的桥梁,能有效发现建立时间/保持时间违例、时钟偏斜、竞争冒险等关键风险,是保障芯片一次流片成功的关键步骤。其典型应用场景包括高性能计算单元、复杂SoC以及低功耗设计中的状态切换验证。本文聚焦于数字后仿真的具体实施,深入解析SDF文件的结构与反标机制,并提供从环境搭建、波形分析到与静 阅读详情

相关推荐

利用Python暴力破解邻居家WiFi密码

如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀!

weixin_45841831的博客 6万+

Supermarket(POJ-1456)

Problem Description A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting...

Alex_McAvoy的博客 626

全志T133-s3(Tina Linux)下RTL8723DS WiFi驱动移植与调试实战

本文详细介绍了在全志T133-s3平台(Tina Linux)上移植RTL8723DS WiFi驱动的完整流程,包括硬件连接、驱动源码获取、内核配置、系统适配、设备树配置以及常见问题排查。通过实战案例,帮助开发者快速解决SDIO接口通信、固件加载、电源管理等关键问题,实现稳定的WiFi功能。

weixin_30505225的博客 507

POJ - 1456 Supermarket(贪心+并查集优化)

Supermarket Description A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starti...

Than-的博客 271

POWER(十一)charge pump原理

电荷泵是一种基于电容充放电原理的DC-DC转换电路,通过开关控制实现电压转换,包括升压、降压和负压输出。其核心是利用电荷守恒原理,通过电容存储和转移电荷来改变输出电压。典型拓扑结构包括倍压电路和多阶升压电路,具有结构简单、体积小等优势。关键参数包括转换效率、输出电流能力和开关频率,适用于芯片供电、显示屏驱动等低功耗场景。LVDS部分补充说明了自举电路在驱动电路中的应用及其自同步特性。

zhlwsh的博客 2824

RK3588 Android12 添加HDMI和喇叭声音通道切换选项

rk3588 android12系统默认接hdmi out时,声音会切换到hdmi out输出,主板声卡喇叭输出会没有声音输出。现在添加一个选项设置hdmi out时,声音可以保持主板声卡喇叭输出。

Android系统开发笔记 4169

POJ-1456-Supermarket-超市-(贪心+优先队列)

POJ-1456-贪心算法+优先队列Supermarket超市Description描述A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number ...

TianMaXingKong 881

【100%通过率】2023华为od机试C卷【电脑病毒感染】Python 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 3033

G - Supermarket

A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment the s...

weixin_43892738的博客 238

[cshell]个性化配置你的cshrc/tcshrc

本文介绍了csh/tcsh shell的配置优化方法,主要包括:1. 配置文件管理(全局和个人配置);2. 按键绑定设置(解决远程登录按键问题);3. 提示符个性化(包含颜色配置方案);4. 环境变量设置(如LSCOLORS、CLICOLOR等);5. 安全防护措施(防误删、防覆盖等);6. 实用alias命令集(简化操作、提高效率)。文章提供了详细的配置示例,并建议通过man tcsh获取更多帮助信息。这些配置能显著提升shell使用体验和工作效率。

元直的博客 6114

硬件工程师提前批真题及答案解析2

我们需要考虑题目可能的简化假设,即输入电阻 Ri​ 可能是 rbe​ 和 βre​ 的组合,但题目可能简化为: Ri​≈rbe​+βre​。由于锗管的正向导通电压较小(0.2 V~0.3 V),而硅管的正向导通电压较大(0.6 V~0.7 V),因此-4.7 V的电压差不符合硅管的特性,而更接近锗管的特性。在三极管电路中,静态电位是指在无信号输入时,三极管各电极的直流电压。re​ 是动态发射极电阻,通常可以近似为 re​=IE​VT​​,但在题目中已经给出了 re​=300Ω,因此可以直接使用这个值。

XU157303764的博客 782

joj 1966 Super Market III 带期限的作业排序

<br /> <br />A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment the sale begins. Each product takes precisely on

kongming_acm的专栏 942

uniapp [全端兼容] - 实现连接蓝牙电子秤+监听数据转换并实时返回示例代码,uniApp实现BLE蓝牙连接多个电子秤设备、蓝牙通讯协议对接详细教程(全平台兼容H5、微信小程序、苹果安卓App)

uniapp连接蓝牙电子秤,uniapp如何连接电子秤蓝牙,蓝牙称重,实现监听数据转换并实时返回,多蓝牙,uni-app电子秤16进制蓝牙通讯协议对接,uniapp微信小程序蓝牙获取电子秤的值,uniapp蓝牙称重电子秤,蓝牙电子秤硬件,APP端连接蓝牙秤获取重量实时显示在页面上蓝牙秤,插件组件,蓝牙连接失败,uniapp安卓苹果ios连接蓝牙电子秤没反应,uniapp微信小程序 蓝牙低功耗连接发送数据监听接收,uni-app小程序蓝牙连接、读写数据全过程,uniapp连接蓝牙体脂秤,蓝牙搜索不到怎么办,如

🏆 前端领域优质创作者 1万+

POJ 1456 Supermarket (贪心枚举 + 并查集)

POJ 1456 Supermarket (贪心枚举 + 并查集) vj链接 Solution (暴力)按权值从大到小排序,从结束日期开始往前枚举判断是否能安排。 (并查集优化)待补。 代码 #include <algorithm> #include <cmath> #include <iostream> #include <map> #include <queue> #include <set> #include <stdio.

weixin_53177273的博客 178

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

POJ 1456 Supermarket【贪心+并查集优化】

POJ 1456 Supermarket 题目大意: 给你 N 件不同的商品,每件商品最多可以买一次。 每件物品对应两个值 pi di pi 表示物品的价值,di 表示可以买的最迟时间(也就是第一天到第 di 天都可以买这件物品) 每天最多可以买一件物品,问你可以得到的最大价值。 具体思路: kuangbin的题解,用并查集实现了链表搜索的O(1)时间复杂度,Orz 原文: 这里其实用贪心做...

指弹键盘哼民谣 521

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

POJ 1456 Supermarket【贪心 + 并查集】

http://poj.org/problem?id=1456 题意:给你 N 件不同的商品,每件商品最多可以买一次。每件物品对应两个值 pi di pi 表示物品的价值,di 表示可以买的最迟时间(也就是第一天到第 di 天都可以买这件物品) 规定:每天最多可以买一件物品,问你可以得到的最大价值。 思路【贪心版本】:将物品按照价值从大到小排序 ​ 依次枚举每件物品 ​ ...

橘嘉禾 201

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

(贪心+并查集)POJ1456 Supermarket

POJ1456 Supermarket 题意&思路: 给你n个商品的价值(pi)和保质期(必须在第di天之前卖掉)。一天只能卖一个商品,问可以获得的最大利润。 首先是贪心,价值越大的物品越要尽可能的卖出去。就是按找商品的价值排序。 然后售卖的时间可以用并查集来维护(大佬真的tql,并查集还可以这么用)。先开始给fa数组赋值-1,当fa[i]==-1的时候表示这一天还没有买过。fa[t]==...

Z7784562的博客 234

POJ1456 Supermarket【贪心 + 并查集】

Supermarket 题意: 有一些商品,必须在规定的时间内卖掉才能获得一定收益,而每天只能卖一件商品。请计算最大收益。 题解: 针对收益最大,自然想到贪心,但是光对商品价值进行贪心可不能得到一个合理的出售安排。——并查集:s[i]表示原本第i天的商品可以在第几天出售。 如果s[x] == x,表示第x天的商品可以选择在第x天出售即可,如果确定当天需要出售某件商品,则对s[x]进行s[x] = find(s[x] - 1)操作,表示之后如果还有截止时间在第x天的商品,我可以询问前一天是否可...

lllllan 233

POJ 1456 Supermarket 并查集 贪心

题意:有n个商品,第i个的保质期为di,必须在保质期之前卖掉,并且得到pi利润,每天只能买一个商品,求可以得到的最大利润 思路:刚看的时候没看清题意,直接写了个贪心求所有保质期上利润最大值之和,后来发现不一定都要到保质期再卖,只要在保质期之前卖就行。这里的并查集用作优化作用,相当于链表。首先对利润从大到小排序,之后枚举每个商品,将当前商品和能往前递推到的最早那天前一天相连,如果最早为0天,表示卖不...

qq_42397248的博客 206

[POJ 1456]Supermarket[贪心][优先队列or并查集优化]

题目链接:[POJ 1456]Supermarket[贪心][优先队列or并查集优化] 题意分析: 给出若干个商品,每个都有自己的销售截至日期,每天只能销售一个,每销售一个都能得到钱,问:最多能挣到多少钱? 解题思路: 这里可以使用贪心的思路。从末尾往前面数日期,如果当天有商品截止,就把这些商品全都放入优先队列,然后卖出价值最大的那一个;如果当天没有商品截止,就去卖优先队列里价值最大的那个

闲停 773

poj 1456 supermarket(贪心+并查集优化)

问题:SupermarketPOJ - 1456给出n个商品的价格和过期天数,问如果一天只能卖一件,问最大可能营业额分析:贪心策略1:从最后一天开始往前走,每走一天,就把这一天要过期的商品纳入选择列表,每一天都把当前列表里面最贵的商品卖出,直到第一天贪心策略2:把所有的商品按价格从大到小排序,从最大的开始选,将其所对应的最后一天选中,如果选到当前的最大价格商品时,其所对应的最后一天已经有价格更高的...

勉強しているユキさんです 270

POJ1456.Supermarket(贪心+并查集)

题目链接:https://vjudge.net/problem/POJ-1456 题意:给n个商品,在截止期限d前卖出可以赚到p钱,问怎么安排可以使得利益最大化 解题思路: 利用贪心+并查集优化 先贪心按p的从大到小进行排序,将pa[i]初始化为i,使得每一个i各自成为一个集合。当选择一个物品(p,d)时,使pa[d]–,将它从d集合并入d-1的集合中,也就是相当于d这一天被占用了,原来的d集合中的物品想要被卖的话只能在前d-1天内卖出才可以。这样当pa[find(d)]>0的时候表示这个物品可以被选

Buyi的博客 194

POJ 1456 Supermarket [贪心+并查集]

题目地址 贪心:优先选利益最大的商品,从deadline向前推直到都放不了再选下一个商品利益最大的 关键是判断哪一些日子不能再放了,最简单的方法就是一个数组+一个for循环判断 但更快的是用并查集,p=find(deadline) 当p>0,p就是可以放的日子 否则放不了;放好后更新parent[p]=p-1;向前一天递推 #include #include #includ

BRCOCOLI的博客 356

POJ 1456 Supermarket【并查集 + 贪心】

超市里有N个商品. 第i个商品必须在保质期(第di天)之前卖掉, 若卖掉可让超市获得pi的利润. 每天只能卖一个商品. 现在你要让超市获得最大的利润. Input 多组数据. 每组数据第一行为一个整数N (0 <= N <= 10000), 即超市的商品数目 之后N行各有两个整数, 第i行为 pi, di (1 <= pi, di <= 10000) Output...

独钓门前月 526

POJ 1456 Supermarket 贪心+并查集

一、内容 A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment ...

Tizzi的博客 786

POJ - 1456 Supermarket 利用并查集优化贪心

题目链接 POJ-1456 题意 给定n种货物,每件货物有他的利润和保质期,销售一种货物需要一天,求最佳销售方案下的最大获利。 思路 利用并查集优化的贪心。 首先是贪心部分,我们要让获利尽量大,就可以每次都拿当前剩余物品中价值最高的,这件物品可以在保质期的任何一天内卖出,那么显然越晚卖出,就越有可能卖出更多保质期短的物品,就越有可能多获利。所以排序后从大到小枚举时间,可以卖出就更新答案,朴素的贪心复杂度O(n²),这道题是可以过得(数据太弱,按理来说1e4怎么都过不了才对),跑了130ms //主体部分 f

TheSunspot的博客 332
上一篇: HDU - 1263- 水果(map)
下一篇: HDU-1114 Piggy-Bank —DP最小装载
鳳九~
博客等级 码龄8年 1384粉丝 215原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值