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

cogs2235 烤鸡翅 贪心

时间:2017-07-26 00:11:53      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:分析   scan   alt   string   include   else   win   opened   stdout   

链接:http://cogs.pro/cogs/problem/problem.php?pid=2235

题意:每天鸡翅数量都会增加,每天也会有人买一定数量鸡翅,求最多卖给几个人。

奥妙重重……

对每天的鸡翅数量分类讨论,如果够卖就卖上,不够卖就分析前些日子卖得最多的一个如果不卖是否够,够就退了那个,再卖这个。

为什么呢?证明如下:

如果够卖,可以发现剩下的数量更多,答案至少不会更坏;

如果不够卖,就需要退掉至少两天来卖,答案不会更好。

贪心策略得证。

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<queue>
 6 using namespace std;
 7 const int maxn=250005;
 8 int x[maxn],y[maxn];
 9 priority_queue<int,vector<int>,less<int> >q;
10 int haha()
11 {
12     freopen("wing.in","r",stdin);
13     freopen("wing.out","w",stdout);
14     int n;scanf("%d",&n);
15     for(int i=1;i<=n;i++)scanf("%d",&x[i]);
16     for(int i=1;i<=n;i++)scanf("%d",&y[i]);
17     int ans=0;long long num=0;
18     for(int i=1;i<=n;i++)
19     {
20         num+=x[i];
21         if(num>=y[i])
22         {
23             num-=y[i];
24             ans++;
25             q.push(y[i]);
26         }
27         else if(!q.empty())
28         {
29             int k=q.top();q.pop();
30             if(k-y[i]>=0)
31             {
32                 num+=k-y[i];
33                 q.push(y[i]);
34             }
35             else q.push(k);
36         }
37     }
38     printf("%d\n",ans);
39 }
40 int sb=haha();
41 int main(){;}
cogs 2235

 

cogs2235 烤鸡翅 贪心

标签:分析   scan   alt   string   include   else   win   opened   stdout   

原文地址:http://www.cnblogs.com/Loser-of-Life/p/7236721.html

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