ACM选修hust 1075 组合+数学+期望值

Description

Input

Output

Sample Input

2
2 1
0 1
1 0
3 1
0 1 1
1 0 1
1 1 0

Sample Output

0.500
1.125

题意:给出N个node,当节点为女性,且认识K个男性时,该节点就满足条件,求出所有情况满足条件的节点的期望值。想法:由于输入矩阵i X j来表示i是否认识j。故可以记录每个i认识的个数。枚举每个i,再进行排列组合计算,满足条件的个数计入count,计算期望值时除以所有情况(2^n)。    (最开始愚蠢的我写了2的幂指函数,及非打表方式求组合函数,结果没有确认精度损失的问题WA无数次……捂脸)
 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <string.h>
 5 using namespace std;
 6
 7
 8
 9 int a[35][35], b[35];
10 double c[33][33];
11 int main()
12 {
13     //freopen("data.in", "r", stdin);
14     //freopen("data.out", "w", stdout);
15     int T, N, K,x, y, count;
16     double  ans, num;
17
18     c[0][0]=1;
19     for(int i = 1; i <= 30; i++)
20     {
21         c[i][0] = c[i][i]=1;
22         for(int j = 1; j < i; j++)
23         {
24                 c[i][j] = c[i-1][j-1] + c[i-1][j];
25         }
26     }
27     scanf("%d", &T);
28
29         while(T--)
30         {
31              scanf("%d%d",&N, &K);
32
33             memset(b, 0, sizeof(b));
34
35
36             for(int i=0; i<N; i++)
37             {
38                 for(int j=0; j<N; j++)
39                 {
40                     scanf("%d", &a[i][j]);
41                         b[i]+=a[i][j];
42                 }
43             }
44             //printf("%d",b[4]);
45             ans=0;
46             for(int i = 0; i < N; i++)
47             {
48                 if(b[i]>=K)
49                 {
50                     num=0;
51                     for(int j = K; j <= b[i]; j++)
52                     {
53                         num+=c[b[i]][j];
54                     }
55                     for(int j = 1; j <= b[i] + 1; j++)
56                         num/=2.00;
57
58                     ans+=num;
59                 }
60             }
61             printf("%.3lf\n", ans);
62         }
63         return 0;
64
65
66     //fclose(stdin);
67     //fclose(stdout);
68 }
 
时间: 2024-09-30 01:59:31

ACM选修hust 1075 组合+数学+期望值的相关文章

ACM/ICPC算法训练 之 数学很重要-浅谈“排列计数” (DP题-POJ1037)

这一题是最近在看Coursera的<算法与设计>的公开课时看到的一道较难的DP例题,之所以写下来,一方面是因为DP的状态我想了很久才想明白,所以借此记录,另一方面是看到这一题有运用到 排列计数 的方法,虽然排列计数的思路简单,但却是算法中一个数学优化的点睛之笔. Poj1037  A decorative fence 题意:有K组数据(1~100),每组数据给出总木棒数N(1~20)和一个排列数C(64位整型范围内),N个木棒长度各异,按照以下条件排列,并将所有可能结果进行字典序排序 1.每一

hust 1075 Every String Left Behind

题目描述 Elenore has a list of strings that she wants to put in a file. She could just put them all into a file in order, but she wants to minimize the size of the file. So she figures she can combine all the strings into one large string which contains

ACM/ICPC算法训练 之 数学问题

好歹我是数学专业的学生,还是要写写训练的时候遇到的数学问题滴~~ 在ACM集训的时候在各高校OJ上也遇见过挺多的数学问题,例如大数的处理,素数的各种算法,几何问题,函数问题(单调,周期等性质),甚至是各种数学定理或公式的变形.其实算法本身也属于数学研究的范畴(计算机本就是数学的衍生嘛),诸如众多排序算法,搜索算法也是许多精巧的数学逻辑思维,所以大家学计算机千万别忽视数学这门基础学科啊. 貌似说了好多废话= =||,待小编进入正题,今天在湖大OJ训练赛上看到一道数学题,话不多说,直接上图! ___

[ACM] sdut 2877 angry_birds_again_and_again (简单数学积分)

angry_birds_again_and_again Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 The problems called "Angry Birds" and "Angry Birds Again and Again" has been solved by many teams in the series of contest in 2011 Multi-University

ACM选修HUST1058(市赛题) Lucky Sequence 同余定理

Description Edward  得到了一个长度为  N  的整数序列,他想找出这里面有多少个“幸运的”连续子序列.一个连续子序列被称为“幸运的”,当且仅当该子序列内的整数之和恰好是  K  的整数倍数.他请求你写一个程序来计算他喜欢的连续子序列个数. Input 输入第一行是一个整数  T,表示有  T  组数据.每组数据第一行是两个整数  N (1 <= N <= 10^6), K (1 <= K <= 10^9).接下来的一行包含  N  个整数  Ai (|Ai| &

ACM/ICPC算法训练 之 数学很重要-平面几何(POJ 1269)

题意:给定四点的坐标(x,y),分别确定两直线,求出其交点,若重合or平行则输出相应信息 用四个点的坐标算出直线通式(ax+by+c=0)中的a,b,c,然后利用a,b,c计算出交点坐标(其他公式不够通用= =,比如斜率限制) 我利用两次平行判定重合 公式利用 初高中数学知识或代数知识 在草纸上仔细推导出来= =,让a,b,c为整数,比如可以演算得到a = y2-y1,b = x1-x2这一类公式. 详细Code如下: 1 //给定四点,分别确定两直线,求出其交点,若重合or平行则输出相应信息

ACM/ICPC算法训练 之 数学很重要—斐波拉契●卢卡斯数列(HNNUOJ 11589)

看到这个标题,貌似很高大上的样子= =,其实这个也是大家熟悉的东西,先给大家科普一下斐波拉契数列. 斐波拉契数列 又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.…… 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以<斐波纳契数列季刊>为名的一份数学杂志,用于专门刊载这方面的

ACM之一个简单的数学问题

一个简单的数学题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 zyc最近迷上了数学,一天,dj想出了一道数学题来难住他.算出1/n,但zyc一时答不上来希望大家能编程帮助他. 输入 第一行整数T,表示测试组数.后面T行,每行一个整数 n (1<=|n|<=10^5). 输出 输出1/n. (是循环小数的,只输出第一个循环节). 样例输入 4 2 3 7 168 样例输出 0.5 0.3 0.142857 0.005952380 程序源代码: #include&

ACM 总结报告

ACM总结 序: 起初,并不知道ACM是个什么玩意,但是听老师说,感觉很不错,关键是感觉跟着费老做,不会走错.所以就选修了ACM这个课程. 自己之前没有接触过这个东西,所以对算法这个陌生的词汇实在知之甚少,做题目什么的,完全没有一点知识的东西,说实话 --- 全靠想象. 学ACM已经一个学期了,在这个还不算残酷的学期里,经过了  上课 --- 认真听 —- 周六周日比赛训练 --- 自学 --- 不认真听 --- 参加省赛 --- 认真听加自学.原因是什么, 在做ACM题目的时候,很是感觉上AC