BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)
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]地震后的幻想乡(概率)的更多相关文章
- BZOJ 3925: [Zjoi2015] 地震后的幻想乡(概率DP)
这里有一篇很好很强的博客%%% YouSiki大佬的博客 多理解一会就行了- 代码 #include <bits/stdc++.h> using namespace std; typede ...
- BZOJ 3925 ZJOI2015 地震后的幻想乡 状压dp+期望
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3925 题意概述: 给出一张N点M边的最小生成树,其中每条边的长度为[0,1]的实数,求最小 ...
- BZOJ 3925 ZJOI2015 地震后的幻想乡
假设我们用了边权前i小的边使得图连通,那么对答案的贡献为i/m+1 又因为期望的线性性质,我们只需要求用了i条边就可以了 不妨设g(S)(i)表示用了i条边使得点集S连通的概率 设f(S)(i)表示用 ...
- BZOJ 3925 [Zjoi2015]地震后的幻想乡 ——期望DP
我们只需要考虑$\sum F(x)P(x)$的和, $F(x)$表示第x大边的期望,$P(x)$表示最大为x的概率. 经过一番化简得到$ans=\frac{\sum T(x-1)}{m+1}$ 所以就 ...
- 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)
[BZOJ3925][ZJOI2015]地震后的幻想乡(动态规划) 题面 BZOJ 洛谷 题解 题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第 ...
- [ZJOI2015]地震后的幻想乡(期望+dp)
题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡【概率期望+状压DP】
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- 【洛谷3343_BZOJ3925】[ZJOI2015]地震后的幻想乡(状压 DP_期望)
题目: 洛谷 3343 BZOJ 3925 分析: 谁给我说这是个期望概率神题的,明明没太大关系好吧 「提示」里那个结论哪天想起来再问 Jumpmelon 怎么证. 首先,由于开始修路前 \(e_i\ ...
随机推荐
- Tsinsen-A1490 osu! 【数学期望】
问题描述 osu!是一个基于<押忍!战斗!应援团><精英节拍特工><太鼓达人>等各种音乐游戏做成的一款独特的PC版音乐游戏.游戏中,玩家需要根据音乐的节奏,通过鼠标 ...
- a标签屏蔽href跳转
原文地址: http://blog.163.com/huang_qy/blog/static/615601452012101411625600/ 推荐的写法: a href="javascr ...
- jstree使用小结(三)
操作节点的这几个事件都比较简单: 如下 var $tree=$('#tree1'); $tree.jstree({...}); //选中节点 $tree.on('select_node.jstree' ...
- Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)
A. Two Semiknights Meet 题目大意:有一个8x8的棋盘,上面放有两个骑士,骑士以“田字”的方式走.每个方格都被定义为good或者bad,问骑士能否在good的格子中相遇? 由于骑 ...
- Collections笔记
Colletion是集合接口 Collections是集合工具类,是一个类哈! public class CollectionsTest { public static void main(Strin ...
- Django form模块使用心得
最近用Django 写了一个网站,现在来分享一下对Django form 的一些心得. 一,创建一个表单 创建一个Form表单有两种方式: 第一种方式是继承于forms.Form,的一个子类,通过在f ...
- UVa 750 - 8 Queens Chess Problem
题目大意:八皇后问题,在一个8*8的棋盘上,放置8个皇后,使得任意两个皇后不在同一行上.不在同一列上.不在同一条对角线上,不过这道题预先给定了一个位置放置一个皇后,让你输出所有可能的答案. 经典的回溯 ...
- yum命令被锁 Existing lock /var/run/yum.pid
有时使用yum命令,不知怎会回事就提示: Existing lock /var/run/yum.pid: another copy is running as... 感觉也没操作什么错误的事情. 此时 ...
- iOS 之 Property List
1. 概念 用于存储串行化对象,xml格式,存储到plist文件中. 2. 用途 存储用户设置. 3. 优点 程序运行时可动态创建和读写. 4. 使用说明 4.1. 获取plist文件 NSStrin ...
- [QT]简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件
转自:http://blog.csdn.net/dbzhang800/article/details/6348432 简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的, ...