“玲珑杯”第七届郑州轻工业学院ACM程序设计大赛 ------- D:社交网络

题目链接:

  http://acm.zzuli.edu.cn/problem.php?cid=1099&pid=3

题目大意:

  国语题目,题意显而易见,

解题思路:

  只需要对每一个节点进行假设,每一个节点可能是交际花的数目总数乘上概率就是这个节点是交际花的期望,把所有期望加和在一起输出就可以了,

忏悔篇:

  比赛的时候,我们看到是求期望的,就读了读题意,然后放下了,然后放下了(这是多么错误的决定)..............,然后我们就与第一名擦肩而过了,多么痛的领悟,因为平时接触的求概率的题目较少,做出来的更是少之又少,我们当时就差一点点的勇气,加上最后一个小时没有看榜,选题错误,最后···············,血的教训(以后比赛封榜之前一定要看一眼榜单),不说了,我想静静~~~~~~

代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 #include <math.h>
 5 
 6 #define maxn 35
 7 int a[maxn][maxn];
 8 
 9 int main ()
10 {
11     int t, n, k, i, j,x;
12     int num;
13     double  sum;
14 
15     scanf ("%d", &t);
16     memset (a, 0, sizeof(a));
17 
18     for (i=1; i<maxn; i++)//打表,先存储后面运算中需要的组合数
19         a[i][1] = i, a[i][0] = 1;
20 
21     for (i=2; i<maxn; i++)
22         for (j=2; j<maxn; j++)
23             a[i][j] = a[i-1][j] + a[i-1][j-1];
24 
25     while (t --)
26     {
27         scanf ("%d %d", &n, &k);
28         
29         sum = 0;
30 
31         for (i=0; i<n; i++)
32         {
33             num = 0;
34             for (j=0; j<n;j++)
35             {
36                 scanf ("%d", &x);
37                 if (x)
38                     num ++;
39             }
40             for (j=k; j<=num; j++)
41                 sum += a[num][j] / pow(2,num+1);
42         }
43         printf ("%.3f\n", sum);
44     }
45     return 0;
46 }

 

posted @ 2015-04-21 17:00  罗茜  阅读(650)  评论(0编辑  收藏  举报