CLJ就是喜欢出ctsc上讲的东西,看来还是得找时间把他的那几道题做下

首先记f(x)为答案>x的概率,那么把这个东西从0到1积分就是答案了

f(x)<=>边小于x不能使图联通的概率

这个有点难求,考虑求使图联通的概率

记f(s)为集合s联通的概率,那么f(s)=1-sigma(f(s')*(1-x)^cnt) (s'属于s且s'一定包含某点k,cnt为链接s'与Cs s'的边数)

可以发现f(s)是个多项式,就可以积分了

由于还没用上64位评测系统,double还是不能过,只好用__float128,比较慢而已

CODE:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
typedef vector<__float128> ploy;
ploy operator + (ploy x,ploy y){
ploy ans(max(x.size(),y.size()),);
for (int i=;i<ans.size();i++) {
if (i<x.size()) ans[i]+=x[i];
if (i<y.size()) ans[i]+=y[i];
}
return ans;
}
ploy operator - (ploy x,ploy y) {
ploy ans(max(x.size(),y.size()),);
for (int i=;i<ans.size();i++) {
if (i<x.size()) ans[i]+=x[i];
if (i<y.size()) ans[i]-=y[i];
}
return ans;
}
ploy operator * (ploy x,ploy y) {
ploy ans(x.size()+y.size()-,);
for (int i=;i<x.size();i++)
for (int j=;j<y.size();j++)
ans[i+j]+=x[i]*y[j];
return ans;
}
bool b[];
ploy f[],quick[];
int n,m;
struct edges{int x,y;}e[];
ploy ONE(,);
inline void print(ploy x){
printf("%d\n",x.size());
for (int i=;i<x.size();i++) printf("%lf ",double(x[i]));
printf("\n");
}
void dp(int x){
if (b[x]) return ;
b[x]=;
ploy tmp(,);
for (int i=;i<(<<n);i++) {
if (!(i&)) continue;
if ((i&x)!=i) continue;
if (i==x) continue;
int j=x^i;
int cnt=;
for (int k=;k<=m*;k++)
if (i&(<<e[k].x)&&j&(<<e[k].y)) cnt++;
dp(i);
tmp=tmp+f[i]*quick[cnt];
}
f[x]=ONE-tmp;
}
__float128 cal(ploy x) {
__float128 ans=;
for (int i=;i<x.size();i++) ans+=x[i]*1.0/(i+);
return ans;
}
int main() {
scanf("%d%d",&n,&m);
quick[]=ONE;
quick[]=ploy(,);
quick[][]=;quick[][]=-;
for (int i=;i<=m;i++) quick[i]=quick[i-]*quick[];
for (int i=;i<=m;i++) {
int x,y;
scanf("%d%d",&x,&y);
x--,y--;
e[i*-]=(edges){x,y};
e[i*]=(edges){y,x};
}
b[]=;f[]=ONE;
dp((<<n)-);
ploy ans=ONE-f[(<<n)-];
printf("%.6lf\n",double(cal(ans)));
return ;
}

BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)的更多相关文章

  1. BZOJ 3925: [Zjoi2015] 地震后的幻想乡(概率DP)

    这里有一篇很好很强的博客%%% YouSiki大佬的博客 多理解一会就行了- 代码 #include <bits/stdc++.h> using namespace std; typede ...

  2. BZOJ 3925 ZJOI2015 地震后的幻想乡 状压dp+期望

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3925 题意概述: 给出一张N点M边的最小生成树,其中每条边的长度为[0,1]的实数,求最小 ...

  3. BZOJ 3925 ZJOI2015 地震后的幻想乡

    假设我们用了边权前i小的边使得图连通,那么对答案的贡献为i/m+1 又因为期望的线性性质,我们只需要求用了i条边就可以了 不妨设g(S)(i)表示用了i条边使得点集S连通的概率 设f(S)(i)表示用 ...

  4. BZOJ 3925 [Zjoi2015]地震后的幻想乡 ——期望DP

    我们只需要考虑$\sum F(x)P(x)$的和, $F(x)$表示第x大边的期望,$P(x)$表示最大为x的概率. 经过一番化简得到$ans=\frac{\sum T(x-1)}{m+1}$ 所以就 ...

  5. 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)

    [BZOJ3925][ZJOI2015]地震后的幻想乡(动态规划) 题面 BZOJ 洛谷 题解 题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第 ...

  6. [ZJOI2015]地震后的幻想乡(期望+dp)

    题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...

  7. BZOJ3925: [Zjoi2015]地震后的幻想乡

    Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...

  8. BZOJ3925: [Zjoi2015]地震后的幻想乡【概率期望+状压DP】

    Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...

  9. 【洛谷3343_BZOJ3925】[ZJOI2015]地震后的幻想乡(状压 DP_期望)

    题目: 洛谷 3343 BZOJ 3925 分析: 谁给我说这是个期望概率神题的,明明没太大关系好吧 「提示」里那个结论哪天想起来再问 Jumpmelon 怎么证. 首先,由于开始修路前 \(e_i\ ...

随机推荐

  1. 已知从BUF开始存放了10个字类型有符号数据,编程求出这10个数中的最大数和最小数(将最大数存入MAX字单元、最小数存入MIN字单元),并将其以10进制数的形式在屏幕上显示出来。

    data segment            pmax db 0dh,0ah , 'MAX :   ','$'    pmin db 0dh,0ah , 'MIN :   ','$'    buf ...

  2. ARM处理器工作模式

    学习ARM处理器参考的首选资料是ARM Architecture Reference Manual,是最专业权威的学习资料. ARM处理器共有7种工作模式,如表1-1和1-2所示: 表1-1 处理器工 ...

  3. Java Spring MVC项目搭建(二)——项目配置

    1.站点配置文件web.xml 每一个Spring MVC 项目都必须有一个站点配置文件web.xml,他的主要功能吗....有一位大哥已经整理的很好,我借来了,大家看看: 引用博客地址: http: ...

  4. ios framework 开发

    ios framework 开发 之 参考 ios framework 开发 之 实战 iOS workspace 依次编译多个工程

  5. mobile meta iphone

    <!doctype html> <html> <head> <title>iOS touch test ( Multi-touch )</titl ...

  6. CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...

  7. Android环境搭建与HelloWorld

    引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始A ...

  8. java_web学习(2)Servlet

    软件编程体系 B\S 系统架构与C\S 系统结构 Web服务器         HTTP 协议:Web 浏览器与 web 服务器的交互所遵循的规则.         Web 服务器:Web服务器可以解 ...

  9. 一张图告诉你什么是Linux distributions...

  10. 让php Session 存入 redis 配置方法

    首先要做的就是安装redis 安装方法:http://redis.io/download Installation Download, extract and compile Redis with: ...