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 }

 

  
posted @ 2014-03-20 22:08  芷水  阅读(262)  评论(0编辑  收藏  举报