久違的月賽之一and二

2021-07-11 22:13:23 字數 3109 閱讀 3362

久違的月賽之一

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

好久沒舉月賽了,這次lqw給大家出了5道題,因為hsy學長宣傳的很到位,吸引了n個ddmm們來做,另一位kk學長說,全做對的要給金獎,做對4題要給銀獎,做對3題要給銅獎。統計資料的時候,發現每題分別在n個人中有n1、n2、n3、n4、n5個人通過,lqw靈機一動,問kk:「你猜,這次至少會有多少個人獲獎?」由於題目太簡單了,每題的通過人數一定大於等於最低獲獎人數。

input

第一行乙個數字t,表示有多少組資料,每組資料如下所示(1000 < t < 5000, 100<=n<=1000000, n1,...,n5<=n):

nn1 n2 n3 n4 n5

output

針對每組資料,輸出乙個數,表示最低獲獎人數。

sample input

247703844 3748 3296 3390 475950001944 2353 4589 2386 3837

sample output

31661703

faq | about virtual judge | 

forum | 

discuss | 

open source project

思路:因為題目有

「每題的通過人數一定大於等於最低獲獎人數」這麼句話,所以也就是說獲得獎的人數肯定少於解出每道題的人數。所以咱們可以這樣想,首先咱們先假設讓每個人都做出兩道題,如果所有人數(設為n)*2大於等於五道題做出的總人數的話,那麼肯定不能保證所有的人都做出兩道題,也就是說沒有乙個人能夠做出三道題,所以最少人數是0。那麼如果n*2小於五道題做出的總人數的話,那麼還有m道題(m=五道題總人數-n*2)可以分配給這n個人,但是要想獲獎最少,那麼就得讓這n個人獲得金牌的人數足夠多,也就是說把這剩餘的m道題分給n個人,讓每個人都盡量是金牌。那麼答案就是用m除以3,如果整除的話,則結果就是這個答案,如果不能整除的話,結果就是這個答案+1,說明還有乙個人不是金牌。

#include

#include

#include

#include

#include

#include

#include

#define

max(a,b)(a>b?a:b)

#define

min(a,b)(atypedef

long

long ll;

using

namespace std;

intmain()}

return0;

}

久違的月賽之二

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

好久沒舉辦月賽了,這次lqw又給大家出了5道題,因為hsy學長宣傳的很到位,吸引了n個ddmm們來做,另一位kk學長說,全做對的要給金獎,做對4題要給銀獎,做對3題要給銅獎。統計資料的時候,發現每題分別在n個人中有n1、n2、n3、n4、n5個人通過,lqw問kk:「這次難度稍微提高了些,你再猜下,至少會有多少個人獲獎?」

input

第一行乙個數字t,表示有多少組資料,每組資料如下所示(100< t < 300, 10<=n<=100, n1,...,n5<=n):

nn1 n2 n3 n4 n5

output

針對每組資料,輸出乙個數,表示最低獲獎人數。

sample input

29276 72 72 53 928170 81 45 63 64

sample output

6458

faq | about virtual judge | 

forum | 

discuss | 

open source project

hust acm/icpc team 

貪心吧~

要想獲獎最少,那麼最好就是讓做出兩道題的人數盡量多,那麼咱們一開始先把五道題的解題數量排一下序。讓總的人數n*2--解出最多的兩道題的數量,然後和做出剩餘三道題目的數量的人數總和相比較,如果是小於,那麼肯定不夠分,則獲獎人數至少為0。那麼如果大於,就接著判斷獲得金牌和銀牌和銅牌的人數就行。

#include

#include

#include

#include

#include

#include

#include

#define

max(a,

b)(a>b?

a:b)

#define

min(a,

b)(aa:b)

typedef

long

longll;

using

namespace

std;

intmain

()sort(a

+1,a+6

); ///注意排序

sum=

sum-2*n

; ///先考慮:能否全部都做兩道題if(

sum<=

0) ///不夠沒人兩道 直接輸出0

printf("0

\n");else

else 如果剩餘的題,分完金牌,還沒分完

else ///、如果分完了銀牌,還剩題目沒分}}

}return0;

}

兩道題 的區別就在:每題的通過人數一定大於等於最低獲獎人數」一句話~

G 久違的月賽之一

1 2 g 久違的月賽之一 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 好久沒舉月賽了,這次lqw給大家出了5道題,因為hsy學長宣傳的很到位,吸引了n個ddmm們來...

FZU 2138 久違的月賽之一

先讓所有人都做對兩個題,那現在如果還有剩下的題的話就肯定有人獲獎,讓獲獎的人都做對五個題,因為最後一句話說了每題的通過人數一定大於等於最低獲獎人數,那這裡sum 3或者 sum 3 1 就是獲獎人數,不用考慮這個數大於最少ac數,這個是跟下一道題目的區別。因為做對5題的人數不可能超過最少ac數。好吧...

FZU 2138 久違的月賽之一

problem 2138 久違的月賽之一 好久沒舉月賽了,這次lqw給大家出了5道題,因為hsy學長宣傳的很到位,吸引了n個ddmm們來做,另一位kk學長說,全做對的要給金獎,做對4題要給銀獎,做對3題要給銅獎。統計資料的時候,發現每題分別在n個人中有n1 n2 n3 n4 n5個人通過,lqw靈機...