fzu 2139 久违的月赛之二

Problem 2139 久违的月赛之二

Accept: 42    Submit: 106
Time Limit: 1000 mSec    Memory Limit : 32768 KB

Problem 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):

 

n

 

n1 n2 n3 n4 n5

Output

针对每组数据,输出一个数,表示最低获奖人数。

Sample Input

2
92
76 72 72 53 92
81
70 81 45 63 64

Sample Output

64
58
 
 
 
 
关于1的在         http://www.cnblogs.com/tom987690183/p/3418944.html
 
 
1. “ 每题的通过人数一定大于等于最低获奖人数”,正式基于这个条件,
  所以我们的可以把它的和加起来,平均分配各学生。
    假如遇到这个例子(2,1,0,0,0),那至少有一个人能获得么?不可以。
2. 这就是2的问题需要考虑的,同理我只要考虑让1个人做错3道题,那么他就不能拿奖了呀。
 数据范围比较小,所以可以贪心一下,每次人数+1,前三个大的错误数-1。(⊙o⊙)…,借别人的说.
  请参考     http://hi.baidu.com/ydlqw/item/120cd21a5afd5becddeeca41?qq-pf-to=pcqq.c2c
  
 1 #include<iostream>

 2 #include<stdio.h>

 3 #include<cstring>

 4 #include<cstdlib>

 5 #include<algorithm>

 6 using namespace std;

 7 

 8 int a[10];

 9 bool cmp(int n1,int n2)

10 {

11     return n1>n2;

12 }

13 int main()

14 {

15     int T,n;

16     int i,cur;

17     while(scanf("%d",&T)>0)

18     {

19         while(T--)

20         {

21             scanf("%d",&n);

22             for(i=1;i<=5;i++)

23             {

24                 scanf("%d",&a[i]);

25                 a[i]=n-a[i];

26             }

27             sort(a+1,a+1+5,cmp);

28             cur=0;

29             while(a[3]!=0)

30             {

31                 cur=cur+1;

32                 if(cur==n)break;//这个你是要考虑的哦  测试数据 5     0 0 0 0 0  

33                 a[1]=a[1]-1;

34                 a[2]=a[2]-1;

35                 a[3]=a[3]-1;

36                 sort(a+1,a+1+5,cmp);

37             }

38             printf("%d\n",n-cur);

39         }

40     }

41     return 0;

42 }

 

  

你可能感兴趣的:(fzu 2139 久违的月赛之二)