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

0
1
已解决
陈曦
陈曦
资深天翼
资深天翼

题目传送门

#include<iostream>
#include<algorithm>
using namespace std;
long long n,a,b,s[100010],cnt,maxn;
int main(){
    cin>>n;
    for(long long i=1;i<=n;i++){
        cin>>a>>b;
        for(long long j=1;j<=a;j++){
            s[++cnt]=b;
        }       
    }
    sort(s+1,s+cnt+1);
    for(long long i=1,j=cnt;i<=j,j>=i;i++,j--){
        //cout<<s[i]<<" "<<s[j]<<endl;
        long long tmp=s[i]+s[j];
        if(maxn<tmp){
            maxn=tmp;
        }
    }
    cout<<maxn;
    return 0;
}

 

请找错

说思路。


0
已采纳
刘承志
刘承志
中级光能
中级光能
while(i<=j){
        ans=max(ans,a[i].m+a[j].m);
        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--;
        }
    }

重点部分,i和j的值自己想

0
0
被禁言 李秉轩
李秉轩
修练者
修练者
#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; 
        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);
}

 

0
江子周
江子周
中级守护
中级守护

王老师刚刚出的新微课……

我要回答