URAL 1964 - Chinese Dialects(貪心)

題意:有n個人,會說k種語言,其中ai個人會說第i種語言,問最少有多少人會同時說k種語言

一開始我還以爲這是個容斥原理的題目,後來一想,貪心即可

後面和前面的交集進行比較,如果不會有交集,則退出,否則求出新的交集,繼續計算

思路很巧妙,是個好題

#include <stdio.h>
int n,k;
int a[25];
int solve()
{
    int x=a[0]+a[1]-n;
    if(x<0)return 0;
    for(int i=2;i<k;i++)
    {
        x=x+a[i]-n;
        if(x<0)return 0;
    }
    return x;
}
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=0;i<k;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("%d\n",solve());
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章