2015轻院校赛 D 社交网络(排列组合)
http://acm.zznu.edu.cn/problem.php?id=1964
题目描述

输入

输出

样例输入
2
2 1
0 1
1 0
3 1
0 1 1
1 0 1
1 1 0
样例输出
0.500
1.125
提示

之前想了一个公式 就是0.5*pow(0.5,k)*C(k,n);
k是至少认识k个人 n是认识n个人
后来队友都把所有的东西都写出来了我才去验证第二个测试数据 发现是错的 当时真的想自己从五楼上跳下来
正确的公式应该是
for(i=k;i<=n;i++)
{
ans+=0.5*pow(0.5,n)*C(i,n);
}
现在想想真是很有道理啊
当时为啥就是蒙蔽呢
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cmath> using namespace std; int num[];
int x1[];
int x2[];
int s[][]; void Init(int n)
{
memset(s, , sizeof(s));
for(int i=; i<=n; i++)
{
int x=i;
for(int j=; j<=i; j++)
{
if(x%j==)
{
s[i][j]++;
x/=j;
j--;
}
}
}
} long long c(int n, int k)
{
memset(x1, , sizeof(x1));
memset(x2, , sizeof(x2));
for(int i=; i<=k; i++)
{
for(int j=; j<=i; j++)
{
x1[j] += s[i][j];
}
}
for(int i=n-k+; i<=n; i++)
{
for(int j=; j<=i; j++)
{
x2[j] += s[i][j];
}
}
for(int i=; i<=; i++)
{
x2[i]-=x1[i];
}
long long ans=;
for(int i=; i<=; i++)
{
for(int j=; j<=x2[i];j++)
{
ans*=i;
}
}
return ans;
} double solve(int n, int k)
{
double ans=;
for(int i=k;i<=n;i++)
{
ans += 0.5*c(n, i)*pow(0.5, n);
} return ans;
} int main()
{
int t;
int n, k;
int x;
scanf("%d", &t);
Init();
while(t--)
{
scanf("%d%d", &n, &k);
for(int i=; i<=n; i++)
{
int sum1=;
for(int j=; j<=n; j++)
{
scanf("%d", &x);
if(x==)
sum1++;
}
num[i]=sum1;
}
double ans=;
for(int i=; i<=n; i++)
{
if(num[i]>=k)
{
ans+=solve(num[i],k);
}
}
printf("%.3lf\n", ans);
} return ;
}
2015轻院校赛 D 社交网络(排列组合)的更多相关文章
- 2015轻院校赛 B 迷宫 (bfs)
http://acm.zznu.edu.cn/problem.php?id=1967 这套题的有毒 我交了好多遍才对 坑:机关要按照顺序走 并且在走这个机关之前不能走这个机关 但是能穿过这个机关 ...
- 【DFS+堆的二叉树结构】15轻院校赛-J-堆
[题目链接:J-堆] 1734: 堆 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 239 Solved: 113 SubmitStatusWeb B ...
- 轻院校赛-zzuli 2266: number【用每位的二进制的幂的和来进行hash(映射)处理】
zzuli 2266: number 大致题意: 给定n,问有多少数对<x, y>满足: x, y∈[1, n], x < y x, y中出现的[0, 9] ...
- 【二叉树、堆】15轻院校赛-J-堆
原题:http://acm.zzuli.edu.cn/problem.php?cid=1099&pid=9 [描述] [输入] [输出] Sample Input 3 1 10 3 10 5 ...
- Digit Division(排列组合+思维)(Gym 101480D )
题目链接:Central Europe Regional Contest 2015 Zagreb, November 13-15, 2015 D.Digit Division(排列组合+思维) 题解: ...
- 【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合
[题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第 ...
- 学习sql中的排列组合,在园子里搜着看于是。。。
学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...
- .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)
今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几 ...
- 【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合
本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...
随机推荐
- C#读取web.config配置文件内容
1.对配置文件的访问. 方法一: string myConn =System.Configuration.ConfigurationManager.ConnectionStrings["sq ...
- uva12105 Bigger is Better
更简单的做法:定义状态dp[i][j]表示在已经用了i根火柴的情况下拼出来了剩余部分(是剩余部分,不是已经拼出来了的)为j(需要%m)的最大长度,一个辅助数组p[i][j]表示状态[i][j]的最高位 ...
- excel数据比对,查找差异
1.选中需比对的数据 2.开始->条件格式->突出显示单元格规则->重复值 3.选择唯一值,点击确定 4.结果展示 5.颜色标识的即:不同值
- Java开发中常见的异常问题
要调试程序,自然需要对程序中的常见的异常有一定的了解,因此在这里我将一些常见的Java程序中的异常列举出来给大家参考 AD: 作为一名开发者,Java程序员,很自然必须熟悉对程序的调试方法.而要调试程 ...
- [LUOGU] P3871 [TJOI2010]中位数
题目描述 给定一个由N个元素组成的整数序列,现在有两种操作: 1 add a 在该序列的最后添加一个整数a,组成长度为N + 1的整数序列 2 mid 输出当前序列的中位数 中位数是指将一个序列按照从 ...
- 13. OPTIMIZER_TRACE
13. OPTIMIZER_TRACE OPTIMIZER_TRACE表提供由跟踪语句的优化程序跟踪功能生成的信息. 要启用跟踪,请使用optimizer_trace系统变量. 有关详细信息,请参阅M ...
- css 实践记录
子绝父相 https://developer.mozilla.org/zh-CN/docs/Web/CSS/position 利用子绝父相来实现一种比较老的居中方式:1.明确宽度:2.定位左边到容器的 ...
- python基础知识08-类定义、属性、初始化和析构
1.类的定义 class 类 是独立存放变量(属性/方法)的一个空间. 每个实例都是一个独立的变量空间.不同实例之间的空间互相不可见. 一个实例的特征,就是属性. 定义在类中的私有属性也可以被子类继承 ...
- 南邮CTF--SQL注入题
南邮CTF--SQL注入题 题目:GBK SQL injection 解析: 1.判断注入点:加入单引号发现被反斜杠转移掉了,换一个,看清题目,GBK,接下来利用宽字节进行注入 2.使用'%df' ' ...
- 关于markdown 的简单使用(已更新)
markdown的介绍 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式. Markdown具有一系列衍生版本,用于扩展Mar ...