CodeForce-810B Summer sell-off (结构体排序)

http://codeforces.com/problemset/problem/810/B

已知n天里,已知第i天的供货量和需求量,给定一个f,可以在n天之中选f天促销使得供货量翻倍。

问选择其中f天的供货量翻倍之后,n天之后总的销量是多少。

思路:先对于每一天都先算出正常的销量 x1 = min(供货量,需求量) ,然后再算每一天促销之后的销量 x2 = min(供货量*2,需求量)  。

对 x2 - x1 进行排序,找出促销之后销量增加最大的 f 天,正常模拟输出即可。

结构体:

struct node

{

   long long 供货量,销售量,正常销量,促销销量;

   正常销量 = min(供货量,需求量);

   促销销量 = min(供货量*2,需求量);

}货物[100005];

/*这题在CF上的测试数据有一百多组。*/

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct node
 4 {
 5     int k,l,x1,x2;
 6 }s[100050];
 7 int cmp(node a,node b)
 8 {
 9     return a.x2>b.x2;
10 }
11 int main()
12 {
13     int n,f;
14     cin>>n>>f;
15     for(int i=0;i<n;i++)
16     {
17         cin>>s[i].k>>s[i].l;
18         s[i].x1=s[i].k>=s[i].l?s[i].l:s[i].k;
19         s[i].x2=s[i].k*2>=s[i].l?s[i].l:s[i].k*2;
20         s[i].x2-=s[i].x1;
21     }
22     sort(s,s+n,cmp);
23     long long ans=0;
24     for(int i=0;i<n;i++)
25     {
26         if(i<f) ans+=s[i].k*2>=s[i].l?s[i].l:s[i].k*2;
27         else ans+=s[i].x1;
28     }
29     cout<<ans<<endl;
30     return 0;
31 }

 

转载于:https://www.cnblogs.com/YingZhixin/p/6905891.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值