Luogu3669牛牛配对
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu3669牛牛配对相关的知识,希望对你有一定的参考价值。
算法:贪心
序:这题Luogu上题面是我翻译的QWQ(捂脸),不过错了一个地方:在输入格式那里应该是接下来有N行
题解:
一题简单的贪心。
每次选产奶量最少的和产奶量最多的配对,取它们产奶时间的最大值就可以啦
代码:
#include<cstdio> #include<algorithm> using namespace std; const int N=100005; struct Node { int x, y; }a[N]; bool cmp(Node s, Node t) //按照产奶量从大到小排序 { return s.y<t.y; } int n,ans; int main() { 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) { if(a[i].y+a[j].y>ans) ans=a[i].y+a[j].y; //产奶时间当前最长,更新答案ans 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); //最后输出ans即可 }
以上是关于Luogu3669牛牛配对的主要内容,如果未能解决你的问题,请参考以下文章