Rainbow的商店

2024-02-06 09:40
文章标签 商店 rainbow

本文主要是介绍Rainbow的商店,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Rainbow的商店

总时间限制: 

1000ms

内存限制: 

262144kB

描述

Rainbow开了一家商店,在一次进货中获得了N个商品。

已知每个商品的利润和过期时间。

Rainbow每天只能卖一个商品,并且过期商品不能再卖。

Rainbow也可以选择在每天出售哪个商品,并且一定可以卖出。

由于这些限制,Rainbow需要制定一份合理的售卖计划。请你计算一下,Rainbow最终可以获得的最大收益。

输入

第一行两个整数N。
接下来N行每行两个整数,分别表示每个商品的利润、过期时间。

1<=N,利润,时间<=10000。

输出

输出一个整数,表示Rainbow最终可以获得的最大收益。

样例输入

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

样例输出

185

提示

第1天卖出20
第2天卖出100
第3天卖出10
第4天卖出50(实际上只要在第10天卖就可以)
第5天卖出5(实际上只要在第20天前卖就可以)
总计185
其它2件商品由于过期、每天只能卖一个的限制,在最优策略下应该不出售。

思路:

  看到了这道题,我第一个想到的不是排序,而是贪心, 于是我就决定先用贪心算法实现,如果实在不行就想一下怎么排序,接下来我就给大家讲我贪心的思路:

  贪心比较特殊,要让最大的卖出去,又尽量不能让小的过期,只按照价值排遇到保质期大的大值就会出问题

  最后思路是:大的在前,价值一样的话天数少的在前,但其实没有影响

  设立vis数组表示某天是不是被占用,从最大的d开始,向前找有没有未占用的天数

  然后设立一个结构good,里面是一个物品的利润和过期时间,然后说明一下调用排序的。

  之后利用STL库里面的priority_queue的一个类(就是优先队列),将其变量设为这个结构,之后按照贪心的思想进行入队和出队。

代码:

#include<bits/stdc++.h>
using namespace std;
int N;
struct Goods{int w;int d;friend bool operator<(const Goods a,const Goods b){if(a.w!=b.w) return a.w<b.w;else return a.d>b.d;	}
}good[10005];
bool vis[10005]={};
int main()
{cin>>N;priority_queue<Goods>que;int sum=0;for(int i=1;i<=N;i++){scanf("%d %d",&good[i].w,&good[i].d);que.push(good[i]);}while (!que.empty()){Goods now=que.top();que.pop();for(int i=now.d;i>=1;i--){if(!vis[i]){vis[i]=1;sum+=now.w;break;}}}printf("%d\n",sum);return 0;
}

  这道题的算法标签虽然是排序,但是也可以经过思考,换一种算法来进行解决!

改题链接:

OpenJudge - 9:Rainbow的商店http://dsalgo.openjudge.cn/sort/9/

这篇关于Rainbow的商店的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/683891

相关文章

Android 跳转至各大应用商店应用详情页

测试通过机型品牌: 华为、小米、红米、OPPO、一加、Realme、VIVO、IQOO、荣耀、魅族、三星 import android.content.ActivityNotFoundException;import android.content.Context;import android.content.Intent;import android.content.pm.Package

巨魔商店2安装教程,支持最新iOS 17.0的所有型号

支持iOS15.0到16.6.1、16.7 RC (20H18)和17.0的所有iPhone/iPad。 工具下载地址: https://wwi.lanzoup.com/b0knd3q5g 密码:czhi Windows安装教程: 1,电脑必须安装ITunes,关闭查找我的 iPhone,手机上必须要有提示(Tips)app如果没有,需要到应用商店下载安装。(安装完成后可以重新打开查找

Windows10 下cmd输入python弹出应用商店,编译python程序时提示Python was not found but can be installed from the Microso

sublime中执行代码出现如下问题   cmd执行python命令时出现应用商店:   就很尴尬,突然就这样了,然后百度一下,都是说去删一下环境变量,即这个: 于是就顺着这个路径看一下,发现里面有两个python文件,且大小都是0kb,于是就删了一下这两个不正常的文件。 然后,就好了。   这里主要是微软在win10在2019年5月的更新中,默认把Python指向了应

我问Chat GPT:怎么提交app到苹果商店审核

ChatGPT 说: ChatGPT 将应用提交到苹果应用商店 (App Store) 进行审核是一个多步骤的过程,以下是详细步骤: 1. 准备工作 在提交应用之前,请确保完成以下准备工作: 创建 App Store 连接账号: 确保您已经注册为 Apple Developer 并且有一个 App Store Connect 账号。 配置 Xcode 项目: 在 Xcode 中

iOS巨魔商店免越狱作弊解决方案

众所周知,在iOS独特的闭源生态下,官方唯一的应用下载渠道是App Store,应用下载会经过层层审核与测试来保障其安全性与稳定性,未经审核的应用将无法下载到手机。 这一举措限制了用户获取非官方或破解版应用的可能性,与开源的安卓系统相比,iOS系统下游戏面临的安全风险会有所降低,但也导致了部分公司掉以轻心,在开发iOS端过程中忽视了安全问题。 如常见的iOS端作弊手段——iOS越狱。i

微软商店Microsoft Store离线安装包更新包下载

某些情况下我们会遇到微软商店无法打开、无法更新、崩溃、无法正常安装应用等异常,我们可以通过如下方法获取最新版本的商店离线安装包将商店进行安装更新来解决相关问题。 1、获取离线包 访问以下地址: https://store.rg-adguard.net/ 在打开的页面输入框选择“URL(link)”并填写以下地址: https://www.microsoft.com/store/pr

Windows10企业版找不到微软商店以及微软商店打不开问题解决

目录 找不到微软商店解决方案重置缓存安装微软商店 Microsoft Store 无法打开问题 找不到微软商店解决方案 重置缓存 打开设置->应用和功能 找到Microsoft Store(如果没有则需要手动安装),点击高级选项,选择重置,或者管理员下命令行执行 wsreset 安装微软商店 打开 https://store.rg-adguard.net/ 搜索 Mi

unity Standard Assets资源商店无法安装解决方案

Unity游戏开发 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发unity中国 嗨嗨嗨,我来啦。 这几天的川渝之旅已经圆满结束了,今天开始正常给大家更新: Unity 从 5.X 版本开始就开始不内置标准资源包了, 都需要自己去下载。 而在 Unity 2018.2.0 之后,官方页面更是直接找不到

基于强化学习的即时商店自动化管理

介绍 如今,提示是与大型语言模型 (LLM) 交互的主要模式。提示需要根据用户需求进行调整,为 LLM 提供正确的上下文和指导 — 以最大限度地提高获得“正确”响应的机会。 这导致了提示工程 [1] 的兴起,并成为一门专业学科,提示工程师系统地进行试验,记录他们的发现,以得出“正确”的提示,从而引发“最佳”反应。然后,这些成功的提示列表以库的形式组织起来,以便可以有效地重复使用——

python环境安装之后,cmd输入python回车会打开微软商店

坑爹!python环境安装之后,cmd输入python回车会打开微软商店 最近发现,安装python环境成功之后,可能会出现cmd输入python验证是否安装成功老会打开微软商店! 解决,打开系统环境配置,找到刚安装python环境的时候加入的python安装路径 你会发现这个windowsapp在python安装目录前面,把windowsapp这行下移到python安装目录下面就行