P3669 [USACO17OPEN]Paired Up 牛牛配对 题解

description:

有M(M为偶数)头奶牛,每头奶牛有一个产奶量,将这些奶牛两两配对,每对奶牛的产奶的时间为两头奶牛产奶量的总和。现在这M/2对奶牛同时产奶,问所需的最短时间是多少 M保证为偶数

solution:

贪心。

将产奶量最少的和最多的匹配,最后取最大的时间即可

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
struct ben
{
    int x,y;
}a[100005];
bool cmp(ben s,ben t) 
{
    return s.y<t.y;
}
int main()
{
	int ans=0,n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&a[i].x,&a[i].y);
    sort(a+1,a+1+n,cmp);
    int i=1,j=n;
    while(i<=j)
    {
    	ans=max(ans,a[i].y+a[j].y);
        if(a[i].x>a[j].x)
        {
            a[i].x-=a[j].x;
            j--;
        } 
        else if(a[i].x<a[j].x)
        {
            a[j].x-=a[i].x;
            i++;
        }
        else
        {
            i++;
            j--;
        }
    }
    printf("%d",ans);
    return 0; 
}
全部评论

相关推荐

有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务