HDU6667 Roundgodとミルクティー

問題の意味

Nの合計(<= 1E6)クラスI [i]はクラスメートを持つクラス、B [i]はお茶。生徒の各クラスは、お茶のいくつかのメガネを飲むために、n個のクラスを聞いて、お茶独自のクラスを飲むことはできません。
トピックリンク

考え

クラス仕上げを飲むお茶を飲んだ廃棄物は、他のすべてのクラスを意味し、各クラスのミルクが無駄になるかどうかを検討します。学生は、このクラスでお茶を飲むために持っていることを無駄場合は、他のクラスはので、このクラスの生徒は、お茶に他のすべてのクラスを飲みます。無駄がない場合、答えは最小総ミルクとの合計です。

コード

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1000000+10;

int n;
int a[maxn],b[maxn];

int main()
{
    int T;
    scanf("%d",&T);
    while (T--)
    {
        scanf("%d",&n);
        for (int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
        LL suma=0,sumb=0;
        for (int i=1;i<=n;i++) suma+=a[i],sumb+=b[i];
        LL ans=0;
        bool jud=0;
        for (int i=1;i<=n;i++)
        {
            if (suma-a[i]<=b[i])
            {
                ans=max(ans,suma-a[i]+min((LL)a[i],sumb-b[i]));
                jud=1;
            }
        }
        if (!jud)
        {
            ans=min(suma,sumb);
        }
        printf("%lld\n",ans);
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/zhanggengchen/p/11409009.html
おすすめ