zoukankan      html  css  js  c++  java
  • 【POJ1456】Supermarket

    一道经典的贪心题。

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

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

     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
  • 相关阅读:
    php str_ireplace()函数 语法
    php str_replace()函数 语法
    php substr()函数 语法
    php implode()函数 语法
    php explode()函数 语法
    php strtok()函数 语法
    php chunk_split()函数 语法
    php strnatcasecmp()函数 语法
    php strnatcmp()函数 语法
    php strncasecmp()函数 语法
  • 原文地址:https://www.cnblogs.com/shl-blog/p/10803612.html
Copyright © 2011-2022 走看看