当前位置 : 主页 > 网页制作 > HTTP/TCP >

[USACO1.3]混合牛奶 Mixing Milk

来源:互联网 收集:自由互联 发布时间:2021-06-16
【timegate】 https://www.luogu.org/problem/P1208 【解题思路】 先按照 单价 排序, 单价小 的在前面; 单价 一样 的就把 产量多 的放前面;(我是用 结构体 做的,排序方便) 2,当还需要采购

【timegate】

https://www.luogu.org/problem/P1208

【解题思路】

先按照单价排序,单价小的在前面; 单价一样的就把产量多的放前面;(我是用结构体做的,排序方便)

2,当还需要采购时(n不为零),我们从当前还需采购值开始,挨个减一总价钱加上当前最小单价,当这头牛产量为零(不能再从它购买时),换一头牛(数组加一),直到购买完(n=0)为止。

3,输出总价钱,等待评测,然后AC;

【code】

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;  5 int n,ans=-1<<30,sum;  6 struct Node{  7     int x;  8     int y;  9 }a[100005]; 10 bool cmp(const Node &a,const Node &b){ 11     if(a.x==b.x)return a.y>b.y; 12     return a.x<b.x; 13 } 14 int main(){ 15     //freopen("3028.in","r",stdin); 16     //freopen("3028.out","w",stdout);
17     scanf("%d",&n); 18     int s,t; 19     for(register int i=1;i<=n;i++){ 20         scanf("%d%d",&s,&t); 21         a[i].x=s; 22         a[i+n].x=t; 23         a[i].y=1; 24         a[i+n].y=-1; 25  } 26     sort(a+1,a+n*2+1,cmp); 27     for(register int i=1;i<=n*2;i++){ 28         sum+=a[i].y; 29         ans=max(ans,sum); 30  } 31     printf("%d\n",ans); 32     return 0; 33 }
网友评论