首页 > 代码库 > 2014年牡丹江现场赛打铁记

2014年牡丹江现场赛打铁记

10月10号的下午1点半灰机,坑爹的还晚点到了2点半了,然后苦逼的到哈尔滨都晚上8点半了,非直达的灰机伤不起啊T_T。然后找到宾馆再走到大街上就发现为什么这么冷清,明明才9点,夜生活都还没开始人都不见了是要闹哪样??最口苦逼的吃了一顿麦当劳你敢信?

  11号一早起来赶火车去牡丹江,发现沿途的风景真心不错~

到牡师院的时候练习赛已经开始了,我们三弱菜开玩笑说让他们半小时-_-|||,水了两发题目之后就各种无聊,中间貌似pc^2挂了还是怎么滴,各种没反应。

吃完晚饭之后,志愿者还带我们去市中心浪了一会,我们真的是来比赛而不是来旅游的吗→_→

12号吃了一顿超级便宜的早餐之后来到赛场磨蹭了一会之后比赛就开始了。一下就是打铁记录...

A题, Average Score

有一个叫Bob的家伙从A班转到B班的话两个班的平均成绩都会提高,求Bob可能的最低和最高的成绩 

 可以推出公式 

 

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 int main(){
 5     int t, n, m, i;
 6     int minx, maxx;
 7     double a, b, sumN, sumM;
 8     scanf("%d", &t);
 9     while(t--){
10         scanf("%d %d", &n, &m);
11         sumN = sumM = 0;
12         for(i = 0; i < n - 1; i++){
13             scanf("%lf", &a);
14             sumN += a;
15         }
16         maxx = floor(sumN * n / (n - 1) - sumN - 1e-9);//注意不是小于等于号
17         for(i = 0; i < m; i++){
18             scanf("%lf", &b);
19             sumM += b;
20         }
21         minx = ceil(sumM * (m + 1) / m - sumM + 1e-9);
22         printf("%d %d\n", minx, maxx);
23     }
24     return 0;

25 } 

 

I题。Information Entropy

根据题目给的公式直接搞,注意p为0即可,不知道为什么交ZOJ上C会WA,C++缺A了。

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 int main(){
 5     int t, n, i;
 6     double ans, p;
 7     char str[10];
 8     scanf("%d", &t);
 9     while(t--){
10         scanf("%d %s", &n, str);
11         ans = 0;
12         if(str[0] == b){
13             for(i = 0; i < n; i++){
14                 scanf("%lf", &p);
15                 p /= 100;
16                 if(fabs(p - 0) > 1e-9){
17                     ans += p * log2(p);
18                 }
19             }
20             printf("%.10lf\n", -ans);
21         }
22         else if(str[0] == n){
23             for(i = 0; i < n; i++){
24                 scanf("%lf", &p);
25                 p /= 100;
26                 if(fabs(p - 0) > 1e-9){
27                     ans += p * log(p);
28                 }
29             }
30             printf("%.10lf\n", -ans);
31         }
32         else if(str[0] == d){
33             for(i = 0; i < n; i++){
34                 scanf("%lf", &p);
35                 p /= 100;
36                 if(fabs(p - 0) > 1e-9){
37                     ans += p * log10(p);
38                 }
39             }
40             printf("%.10lf\n", -ans);
41         }
42     }
43     return 0;

44 } 

  这两题水的不能再水的水题都能搞,然后我们就犯了非常SB的错误,卡题了,就是D题。。。蠢比的以为是概率论,然后一一直在那边SB的推公式啊推公式,完全没有往其他方面考虑,重点是三个人都在纠结这道题目-_-|||,然后就么有然后了。惨!

  ╮(╯▽╰)╭,都是泪啊T_T

2014年牡丹江现场赛打铁记