zoukankan      html  css  js  c++  java
  • poj 1456 贪心+STL

    题意:有n个商品,每个商品如果能在截止日期之前售出就会获得相应利益,求能获得的最大利益

    一开始对每个时间进行贪心,后来发现后面的商品可以放到之前来卖,然后就wa了

    这里就直接对价格排序,把物品尽量放到最后卖,如果在这个时间有物品卖了,就往前卖,直到前面所有的时间都满了

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 typedef long long ll;
    13 #define cl(a) memset(a,0,sizeof(a))
    14 #define ts printf("*****
    ");
    15 const int MAXN=10005;
    16 int n,m,tt;
    17 struct node
    18 {
    19     int p,d;
    20     node(){}
    21     friend bool operator< (node a,node b)
    22     {
    23         if(a.p==b.p)    return a.d<b.d;
    24         else return a.p<b.p;
    25     }
    26 }nn[MAXN];
    27 priority_queue<node> q;
    28 bool vis[MAXN];
    29 int main()
    30 {
    31     int i,j,k;
    32     #ifndef ONLINE_JUDGE
    33     freopen("1.in","r",stdin);
    34     #endif
    35     while(scanf("%d",&n)!=EOF)
    36     {
    37         while(!q.empty())   q.pop();
    38         for(i=0;i<n;i++)
    39         {
    40             scanf("%d%d",&nn[i].p,&nn[i].d);
    41             q.push(nn[i]);
    42         }
    43         int t=1,sum=0;
    44         cl(vis);
    45         while(!q.empty())
    46         {
    47             node qq=q.top();
    48             //printf("%d %d
    ",qq.p,vis[qq.d]);
    49             if(vis[qq.d]==1)    //已经放过了就往前放
    50             {
    51                 while(qq.d>=1)
    52                 {
    53                     if(!vis[qq.d])
    54                     {
    55                         vis[qq.d]=1;
    56                         break;
    57                     }
    58                     qq.d--;
    59                 }
    60                 if(qq.d>0) //放入成功
    61                 {
    62                     sum+=qq.p;
    63                 }
    64             }
    65             else
    66             {
    67                 sum+=qq.p;
    68                 vis[qq.d]=1;
    69             }
    70             q.pop();
    71         }
    72         printf("%d
    ",sum);
    73     }
    74 }
  • 相关阅读:
    JS监听组合按键
    XSS初体验
    debuggap,移动端调试新方式
    简析分页逻辑
    【译】Javascript中的数据类型
    【译】typeof null的前世今生
    一个跨域请求的XSS漏洞再续
    H5页面音频自动播放问题
    一个跨域请求的XSS续
    成功自我管理之压力管理
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4486827.html
Copyright © 2011-2022 走看看