【BZOJ1417】Pku3156 Interconnect
题解:
比较简单的一道题
显然我们只需要知道每个联通块的大小就可以了
然后发现x1+xn=30 其中xi<=xi+1的状态只有5000
所以直接记忆化搜索就可以了
emm原来map还可以映射vector这些我还以为要自己写
代码(比较暴力):
#include <bits/stdc++.h>
using namespace std;
#define me(x) memset(x,0,sizeof(x))
#define me1(x) memset(x,1,sizeof(x))
#define rint register int
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
const int N=2e3+;
const double ee=1.0000000000;
int n,m,l,num,cnt,head[N],kk;
vector<int> ve;
map<vector<int>,double> M;
bool f[N];
struct re{
int a,b;
}a[N*];
void arr(int x,int y)
{
a[++l].a=head[x];
a[l].b=y;
head[x]=l;
}
void dfs1(int x)
{
cnt++; f[x]=;
int u=head[x];
while (u)
{
int v=a[u].b;
if (f[v]) dfs1(v);
u=a[u].a;
}
}
IL bool cmp(int x,int y)
{
return x<y;
}
double dfs(int x)
{
if (ve[]==n)
{
return();
}
if (M[ve]) return(M[ve]);
double ans=;
int now=kk;
int now2=now;
int l=ve.size()-;
rep(i,,l)
rep(j,i+,l)
{
vector<int>ve1;
rep(k,,l)
if (k!=i&&k!=j) ve1.push_back(ve[k]);
ve1.push_back(ve[i]+ve[j]);
sort(ve1.begin(),ve1.end(),cmp);
ve1.swap(ve);
ans+=ee*ve1[i]*ve1[j]*(dfs(x+)+)/now;
ve.swap(ve1);
now2-=ve[i]*ve[j];
}
ans+=ee*now2/now;
ans/=ee-(ee*now2/now);
M[ve]=ans;
return(ans);
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>m;
kk=n*(n-)/;
rep(i,,m)
{
int x,y;
cin>>x>>y; arr(x,y); arr(y,x);
}
me1(f);
rep(i,,n)
if (f[i])
{
cnt=;
dfs1(i);
ve.push_back(cnt);
}
sort(ve.begin(),ve.end(),cmp);
printf("%.6f",dfs(m));
return ;
}
【BZOJ1417】Pku3156 Interconnect的更多相关文章
- 【BZOJ1417】Pku3156 Interconnect 记忆化搜索
[BZOJ1417]Pku3156 Interconnect Description 给出无向图G(V, E). 每次操作任意加一条非自环的边(u, v), 每条边的选择是等概率的. 问使得G连通的期 ...
- bzoj1417: Pku3156 Interconnect
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1417 1417: Pku3156 Interconnect Time Limit: 10 ...
- 【体系结构】Oracle参数介绍
[体系结构]Oracle参数介绍 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩ ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【调侃】IOC前世今生
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
随机推荐
- codeforces 38G - Queue splay伸展树
题目 https://codeforces.com/problemset/problem/38/G 题意: 一些人按顺序进入队列,每个人有两个属性,地位$A$和能力$C$ 每个人进入时都在队尾,并最多 ...
- Mudo C++网络库第四章学习笔记
C++多线程系统编程精要 学习多线程编程面临的最大思维方式的转变有两点: 当前线程可能被切换出去, 或者说被抢占(preempt)了; 多线程程序中事件的发生顺序不再有全局统一的先后关系; 当线程被切 ...
- ansible笔记(9):常用模块之包管理模块
ansible笔记():常用模块之包管理模块 yum_repository模块 yum_repository模块可以帮助我们管理远程主机上的yum仓库. 此处我们介绍一些yum_repository模 ...
- pyhon 前面补充和set
一, 主要内容. 补充一个字符串的基本操作 li = ["李嘉诚", "麻花藤", "黄海峰", "刘嘉玲"] s = ...
- Hystrix浅谈
Hystrix如何使用很多说明,看了很多博客,却发现能说明一些简单概念的文章就没有. 所以本文不太回去说如何使用 Hystrix ,但是会简明的说一下 一些概念 super(Setter.withGr ...
- @ModelAttribute设置request、response、session对象
利用spring web提供的@ModelAttribute注解 放在类方法的参数前面表示引用Model中的数据 @ModelAttribute放在类方法上面则表示该Action类中的每个请求调用之前 ...
- lua 复制table
cocos2d-lua提供了复制方法clone(),源码如下: function clone(object) local lookup_table = {} local function _copy( ...
- JS将图片转换成Base64码
直接上代码 html页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 38)django-组合搜索
一:组合搜索 组合搜索可以用来实现快速查询.效果图举例.瓜子网站选车 注意:URL中的地址0-0什么的是传递的参数的值. 二:实现组合搜索 组合实现条件 1)有外键或者多对多多关系 2)有choice ...
- SoapUI、Jmeter、Postman三种接口测试工具的比较分析
前段时间忙于接口测试,也看了几款接口测试工具,简单从几个角度做了个比较,拿出来与诸位分享一下吧.各位如果要转载,请一定注明来源,最好在评论中告知博主一声,感谢.本报告从多个方面对接口测试的三款常用工具 ...