码迷,mamicode.com
首页 > 其他好文 > 详细

【POJ1456】Supermarket

时间:2019-05-02 23:12:16      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:为什么   span   splay   ons   close   market   div   const   out   

一道经典的贪心题。

我们不妨将物品按照价值从大到小排序,对于每一个物品,我们尽量让它晚一些被售出,这样得到的答案一定是最优解。

我们可以简单证明一下,首先我们先售出获利较大的物品,这个的正确性是显然的。对于某一个物品,我们最好在时间范围之内让它最晚被售出。为什么呢?因为这个物品在允许范围内的任意时间售出的获利都是相等的,而我们让它最晚售出,就能为之后的物品留出更早的时间,因此之后的物品就更容易被售出。

技术图片
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <queue>
 6 using namespace std;
 7 typedef long long ll;
 8 int n;
 9 struct node {
10     int date,val;
11     bool operator <(const node &x) const {
12         return val>x.val;
13     }
14 }a[100010];
15 int vis[100010];
16 int main() {
17     while(cin>>n) {
18         for(int i=1;i<=n;i++)
19             cin>>a[i].val>>a[i].date;
20         sort(a+1,a+n+1);
21         int ans=0;
22         memset(vis,0,sizeof(vis));
23         for(int i=1;i<=n;i++) {
24             for(int j=a[i].date;j;j--) {
25                 if(!vis[j]) {
26                     vis[j]=1;
27                     ans+=a[i].val;
28                     break ;
29                 }
30             }
31         }
32         cout<<ans<<endl;
33     }
34     return 0;
35 }
AC Code

 

【POJ1456】Supermarket

标签:为什么   span   splay   ons   close   market   div   const   out   

原文地址:https://www.cnblogs.com/shl-blog/p/10803612.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!