「ZJOI2015」地震后的幻想乡
/*
难度最低的解法
钦定一个边集S作为前S小如果这个边集假如第|S|小这条边时加入时S恰好联通, 那么我们就能够算出他的贡献了
恰好联通 = 加了这条边之前不连通方案数 - 加了这条边之后不连通方案数
然后考虑dp联通不连通的状态
f[S][i], g[S][i] 分别表示点集为S用了i条边, 不联通和连通的方案数
显然 F[S][i] + g[S][i] = \binom{bian_S}{i}
然后就可以子集dp转移了F[S][i] = \sum{T \subseteq S } \sum_{j = 0}{bian_T} g[T][j] * \binom{S - T, i - j}
当然是要固定点防止算重的
最后统计答案就是 \frac{1}{m + 1} \sum_{k = 1}^{m} \frac{f[U][k]}{\binom{m}{k}}
*/
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
#include<cmath>
#define ll long long
#define M 10
#define mmp make_pair
using namespace std;
int read() {
int nm = 0, f = 1;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for(; isdigit(c); c = getchar()) nm = nm * 10 + c - '0';
return nm * f;
}
double f[1 << 10][51], g[1 << 10][51], c[51][51], ans;
int n, m, bian[1 << 10], note[51][51];
int main() {
n = read(), m = read();
c[0][0] = 1;
for(int i = 1; i <= m; i++) {
c[i][0] = 1;
for(int j = 1; j <= m; j++) {
c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
}
}
for(int i = 1; i <= m; i++) {
int vi = read() - 1, vj = read() - 1;
note[vi][vj] = note[vj][vi] = 1;
}
for(int s = 1; s < (1 << n); s++) {
int x = -1, tot = 0;
for(int i = 0; i < n; i++) {
if((s & (1 << i)) == 0) continue;
if(x == -1) x = i;
else {
if(note[x][i]) tot++;
}
}
bian[s] = bian[s - (1 << x)] + tot;
}
for(int s = 1; s < (1 << n); s++) {
for(int i = 0; i <= bian[s]; i++) {
for(int t = s; t; t = (t - 1) & s) {
if(t & (s & -s)) {
for(int j = 0; j <= min(i, bian[t]); j++) {
f[s][i] += g[t][j] * c[bian[s - t]][i - j];
}
}
}
g[s][i] = c[bian[s]][i] - f[s][i];
}
}
for(int i = 0; i <= m; i++) ans += f[(1 << n) - 1][i] / c[m][i];
ans /= 1.0 * (m + 1);
printf("%.6lf\n", ans);
return 0;
}
「ZJOI2015」地震后的幻想乡的更多相关文章
- 「ZJOI2015」地震后的幻想乡 解题报告
「ZJOI2015」地震后的幻想乡 想了半天,打开洛谷题解一看,最高票是_rqy的,一堆密密麻麻的积分差点把我吓跑. 据说有三种解法,然而我只学会了一种最辣鸡的凡人解法. 题意:给一个无向图\(G\) ...
- 「SHOI2016」黑暗前的幻想乡 解题报告
「SHOI2016」黑暗前的幻想乡 sb题想不出来,应该去思考原因,而不是自暴自弃 一开始总是想着对子树做dp,但是状态压不起去,考虑用容斥消减一些条件变得好统计,结果越想越乱. 期间想过矩阵树定理, ...
- 【LOJ】#2027. 「SHOI2016」黑暗前的幻想乡
题解 我一开始写的最小表示法写的插头dp,愉快地TLE成60分 然后我觉得我就去看正解了! 发现是容斥 + 矩阵树定理 矩阵树定理对于有重边的图只要邻接矩阵的边数设置a[u][v]表示u,v之间有几条 ...
- 「SHOI2016」黑暗前的幻想乡
题目链接 戳我 \(Describe\) \(n−1\)个公司,每个公司能修一些边,求每条边都让不同的公司来修的生成树的方案数 \(Solution\) 这道题很明显容斥.答案就是:所有都选的生成树个 ...
- loj2027 「SHOI2016」黑暗前的幻想乡
矩阵树定理+模意义下整数高斯消元 #include <algorithm> #include <iostream> #include <cstring> #incl ...
- LOJ2135 「ZJOI2015」幻想乡战略游戏
题意 题目描述 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来,更别说和 ...
- LOJ #2135. 「ZJOI2015」幻想乡战略游戏
#2135. 「ZJOI2015」幻想乡战略游戏 链接 分析: 动态点分治,求加权重心,带修改. 考虑如果知道了一个点s,如何求答案,那么首先可以点分治的思想,求每个联通块内所有点到分治中心距离和,然 ...
- 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)
[BZOJ3925][ZJOI2015]地震后的幻想乡(动态规划) 题面 BZOJ 洛谷 题解 题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第 ...
- BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡
3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1017 Solved: 599[Submit][S ...
随机推荐
- MySQL 中的反引号(`):是为了区分 MySql 关键字与普通字符而引入的符号;一般,表名与字段名都使用反引号。
MySQL 中的反引号(`):是为了区分 MySql 关键字与普通字符而引入的符号:一般,表名与字段名都使用反引号.
- webpack 打包产生的文件名中,hash、chunkhash、contenthash 的区别
table th:first-of-type { width: 90px; } hash 类型 区别 hash 每一次打包都会生成一个唯一的 hash chunkhash 根据每个 chunk 的内容 ...
- arttemplate记录
1,传到前端显示数据,最好用一个包装类,否则不知道怎么拿值 这样是忽略类名,直接从data属性入手,然后用点操作符 如果data是个list,可以用这个形式
- npm install --save 和 --save-dev
最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用比较混乱.其实博主在这之前对这两个参数的理解也是模糊的,各种查资料和实践后对它们之间的异同 ...
- django报错解决:Invalid HTTP_HOST header: 'xxx.com'. You may need to add u'xxx.com' to ALLOWED_HOSTS.
django版本:1.11.15 使用uwsgi+nginx运行django程序,出现报错,报错为:Invalid HTTP_HOST header: 'xxx.com:82'. You may ne ...
- 关于svm
svm的研究一下,越研究越发现深入.下面谈一些我个人一些拙见. svm计算基础是逻辑回归(logistic regression),其实一切二元分类的鼻祖我觉得都是logistic regress. ...
- 一道Linux 面试题
一个文本文件info.txt的内容如下:aa,201zz,502bb,1ee,42每行都是按照逗号分隔,其中第二列都是数字,请对该文件按照第二列数字从大到小排列 答案:cat info.txt|awk ...
- Hbase 简介+环境安装配置教程
HBase介绍 HBase是参考google的bigtable的一个开源产品,建立在hdfs之上的一个提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.是一种介于nosql和RDBMs之间的 ...
- subversion与TortoiseSVN的使用
Subversion是一个自由开源的版本控制系统.在Subversion管理下,文件和目录可以超越时空.Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可 ...
- 排序算法<No.2>【快速排序】
最近因为项目需要,研究AI相关的东西,主要是算法相关的. 有感触,所以决定,来一个系列的博文,可能会耗时很久,那就是要完成算法系列.起点,从最常用最基本的排序开始.后续会跟进其他类型的,比如树,图等领 ...