问题标题: 酷町堂:2609 奶牛配对

1
0
已解决
刘斐
刘斐
高级守护
高级守护

求思路!!

刘斐在2018-07-25 10:29:25追加了内容

#include<iostream>
#include<algorithm>
using namespace std;
struct stu{
    long long x,m;
};
stu s[100010];
long long ans;
int main()
{
    int n;
    cin>>n;
    int cnt=0;
    for(int i=1;i<=n;i++)
    {
        cin>>s[i].x>>s[i].m;
    }
    int i=1,j=n;
    while(i<=j)
    {
        ans=max(ans,s[i].m+s[j].m);
        if(s[i].x==s[j].x)
        {
            i++;
            j--;
        }
        else if(s[i].x>s[j].x)
        {
            s[i].x-=s[j].x;
            j--;
        }
        else
        {
            s[j].x-=s[i].x;
            i++;
        }
    }
    cout<<ans;
    return 0;
}
为什么不对


0
1
王雪阳
王雪阳
高级守护
高级守护

核心代码:

 while(i<=j)
    {
        ans=max(ans,c[i].cl+c[j].cl);
        if(c[i].n==c[j].n)
        {
            i++;
            j--;
        }
        else if(c[i].n>c[j].n)
        {
            c[i].n-=c[j].n;
            j--;
        }
        else
        {
            c[j].n-=c[i].n;
            i++;
        }
    }

思路:

贪心,把产奶量多的配对产奶量少的。

0
0
0
0
陈泉宏
陈泉宏
高级守护
高级守护

用最大的配对最小的(产奶量)

0
范周祥
范周祥
修练者
修练者

思路:

首先结构体排序

再用for将产奶量a[i]和产奶量a[n-i+1]配对;

然后找最大值

 

0
我要回答