• $UVA1316$ 超市 $Supermarket$


    链接

    背景

    (UVA1316)

    题意

    对于多组数据,每次给定 (n) 个商品的利润 (p_i) 和最晚卖出时间 (d_i) 。规定每天只能卖一个没有过期的商品。求最大利润。

    解法

    这题有俩方法。这里仅介绍并查集做法。考虑用并查集来表示一个天数的使用情况,每个天数的父亲在路径压缩后都指向它及它以前时间最晚的一个空时间。这样能确保货物在不过期的情况下最晚卖出,拥有决策包容性。然后就可以按利润降序排列商品,每次查询该商品能被卖出的最晚可用时间(即其代表元素),若该时间不为 (0) 则占用该时间(将该时间的父亲指向上一天)并累计答案。

    代码

    $View$ $Code$ ```cpp #include using namespace std; inline int read() { int ret=0,f=1; char ch=getchar(); while(ch>'9'||ch<'0') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { ret=(ret<<1)+(ret<<3)+ch-'0'; ch=getchar(); } return ret*f; } int n,fa[10005],maxd,ans; struct goods { int p,d; }a[10005]; inline bool cmp(goods a,goods b) { return b.p
  • 相关阅读:
    TCP四次握手断开连接(十一)
    Go-函数
    Go-数据类型以及变量,常量
    GO语言介绍以及开发环境配置
    Socket与WebSocket以及http与https重新总结
    希尔排序
    第19课
    第18课
    外传篇3 动态内存申请的结果
    外传篇2 函数的异常规格说明
  • 原文地址:https://www.cnblogs.com/Peter0701/p/11808506.html
Copyright © 2020-2023  润新知