博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1456-Supermarket
阅读量:6496 次
发布时间:2019-06-24

本文共 1178 字,大约阅读时间需要 3 分钟。

链接:https://vjudge.net/problem/POJ-1456#author=shleodai

题意:

超市里有N个商品. 第i个商品必须在保质期(第di天)之前卖掉, 若卖掉可让超市获得pi的利润. 

每天只能卖一个商品.
现在你要让超市获得最大的利润. 
(原题说明过于抽象)

思路:

贪心加并查集,先将所有物品以价格排序。

之后选物品时,先用并查集,往前查第一个没用过的天。

同时将使用的天合并。

代码:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int MAXN = 10000+10;struct Node{ int _value; int _day; bool operator < (const Node & that)const { return this->_value > that._value; }}node[MAXN];int Father[MAXN];int Get_F(int x){ if (Father[x] == -1) return x; Father[x] = Get_F(Father[x]); return Father[x];}int main(){ int n; while (cin >> n) { memset(Father,-1, sizeof(Father)); for (int i = 1;i<=n;i++) cin >> node[i]._value >> node[i]._day; sort(node+1,node+1+n); /* for (int i = 1;i<=n;i++) cout << node[i]._value << ' ' << node[i]._day << endl; */ int sum = 0; for (int i = 1;i<=n;i++) { int td = Get_F(node[i]._day); if (td > 0) { sum += node[i]._value; Father[td] = td-1; } } cout << sum << endl; } return 0;}

  

转载于:https://www.cnblogs.com/YDDDD/p/10302983.html

你可能感兴趣的文章
dotConnect for Oracle
查看>>
Eclipse下C/C++开发环境搭建
查看>>
Eclipse中设置在创建新类时自动生成注释
查看>>
我的友情链接
查看>>
CoreOS 手动更新
查看>>
golang 分页
查看>>
再论机械式针对接口编程
查看>>
25 个 Linux 性能监控工具
查看>>
C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
查看>>
Tengine-2.1.1 ngx_http_concat_module 400问题
查看>>
Windows中挂载安装ISO文件
查看>>
Wayland 1.0发布
查看>>
golang的goroutine是如何实现的?
查看>>
乐视云基于Kubernetes的PaaS平台建设
查看>>
R 学习笔记《十》 R语言初学者指南--图形工具
查看>>
PHP通过读取DOM抓取信息
查看>>
DICOM医学图像处理:DICOM网络传输
查看>>
nio和传统Io的区别
查看>>
移动端网页布局中需要注意事项以及解决方法总结
查看>>
(原创)Linux下查看系统版本号信息的方法
查看>>