社区讨论

题目是不是数据过水

P6243 [USACO06OPEN] The Milk Queue G参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhiz9sur
此快照首次捕获于
2025/11/03 18:09
4 个月前
此快照最后确认于
2025/11/03 18:09
4 个月前
查看原帖
先按 xx 升序排一遍,再按 yy 降序来一遍,两者取最小就能过?!
CPP
#include<bits/stdc++.h>
using namespace std;
# define N 25005
pair<int,int>S[N];
int n;
bool cmp(pair<int,int>x,pair<int,int>y)
{
    return x.second>y.second;
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&S[i].first,&S[i].second);
    }
    sort(S+1,S+1+n,cmp);
    long long a=0,b=0,t=0;
    for(int i=1;i<=n;i++)
    {
        if(a+S[i].first>=t)
        {
            t=a+S[i].first+S[i].second;
        }else t=t+S[i].second;
        a=a+S[i].first;
    }
    sort(S+1,S+1+n);
    a=0;
    b=0;
    long long ans=0;
    for(int i=1;i<=n;i++)
    {
        if(a+S[i].first>=ans)
        {
            ans=a+S[i].first+S[i].second;
        }else ans=ans+S[i].second;
        a=a+S[i].first;
    }
    printf("%lld\n",min(t,ans));
    return 0;
}
有人能证明或证伪吗,玄关QWQ

回复

2 条回复,欢迎继续交流。

正在加载回复...