CF113D 高斯消元、dp
题目链接
https://codeforces.com/contest/113/problem/D
思路
\(k[i]=\frac{1-p[i]}{ru[i]}\)
f[i][j]表示经过i和j的次数的期望=概率
\(f[i][j]=p[i]*p[j]*f[i][j]\)
\(+k[i]*p[j]*f[u][j]\)
\(+p[i]*k[j]*f[i][v]\)
\(+k[i]*k[j]*f[u][v]\)
把右边的f[i][j]边移过去
可以用高斯消元解方程来进行dp
错误
好多细节没明白
比如f[s][s]=1
orzattack
代码
#include <iostream>
#include <vector>
#include <cmath>
#include <cstdio>
const int N=500;
using namespace std;
int read() {
int x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';
return x*f;
}
int n,m,a,b,ru[N],id[N][N];
vector<int> G[N];
double k[N],p[N],f[N][N];
void init() {
f[id[a][b]][n*n+1]=-1;
for(int i=1;i<=n;++i) {
for(int j=1;j<=n;++j) {
int sdgzy=id[i][j];
--f[sdgzy][sdgzy];
if(i!=j) f[sdgzy][sdgzy]+=p[i]*p[j];
for(vector<int>::iterator x=G[i].begin();x!=G[i].end();++x) {
for(vector<int>::iterator y=G[j].begin();y!=G[j].end();++y) {
if(*x==*y) continue;
f[sdgzy][id[*x][*y]]+=k[*x]*k[*y];
}
}
for(vector<int>::iterator it=G[i].begin();it!=G[i].end();++it) {
if(*it==j) continue;
f[sdgzy][id[*it][j]]+=k[*it]*p[j];
}
for(vector<int>::iterator it=G[j].begin();it!=G[j].end();++it) {
if(*it==i) continue;
f[sdgzy][id[i][*it]]+=k[*it]*p[i];
}
}
}
}
double ans[N];
void gauss() {
int N=n*n;
for(int i=1;i<=N;++i) {
int mx=i;
for(int j=i+1;j<=N;++j)
if(f[j][i]>f[mx][i]&&f[j][i]!=0) mx=j;
if(mx!=i) swap(f[i],f[mx]);
for(int j=1;j<=N;++j) {
if(i==j) continue;
double p=f[j][i]/f[i][i];
for(int k=i;k<=N+1;k++) {
f[j][k]-=f[i][k]*p;
}
}
}
for(int i=1;i<=N;++i) f[i][i]=f[i][N+1]/f[i][i];
}
int main() {
n=read(),m=read();
a=read(),b=read();
for(int i=1;i<=m;++i) {
int x=read(),y=read();
G[x].push_back(y);
G[y].push_back(x);
ru[x]++;
ru[y]++;
}
for(int i=1;i<=n;++i) scanf("%lf",&p[i]);
for(int i=1;i<=n;++i) k[i]=(1.0-p[i])/ru[i];
for(int i=1,cnt=0;i<=n;++i)
for(int j=1;j<=n;++j)
id[i][j]=++cnt;
init();
gauss();
for(int i=1;i<=n;++i) printf("%.10lf ",f[id[i][i]][id[i][i]]);
return 0;
}
CF113D 高斯消元、dp的更多相关文章
- UVALive - 3490 Generator (AC自动机+高斯消元dp)
初始有一个空串s,从前n个大写字母中不断随机取出一个字母添加到s的结尾,出现模式串t时停止,求停止时s的长度期望. 这道题解法不唯一,比较无脑的方法是对模式串t建一个单串AC自动机,设u为自动机上的一 ...
- bzoj 2337 [HNOI2011]XOR和路径【高斯消元+dp】
首先,我们发现,因为是无向图,所以相连的点之间是有"依赖性"的,所以不能直接用dp求解. 因为是xor,所以按位处理,于是列线性方程组,设$ x[i] $为点i到n异或和为1的期望 ...
- bzoj 3143 [Hnoi2013]游走【高斯消元+dp】
参考:http://blog.csdn.net/vmurder/article/details/44542575 和2337有点像 设点u的经过期望(还是概率啊我也分不清,以下都分不清)为\( x[u ...
- 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径
2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 682 Solved: 384[Submit][Stat ...
- 2014多校第一场J题 || HDU 4870 Rating(DP || 高斯消元)
题目链接 题意 :小女孩注册了两个比赛的帐号,初始分值都为0,每做一次比赛如果排名在前两百名,rating涨50,否则降100,告诉你她每次比赛在前两百名的概率p,如果她每次做题都用两个账号中分数低的 ...
- 【高斯消元】兼 【期望dp】例题
[总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $ ...
- BZOJ 3640: JC的小苹果 [概率DP 高斯消元 矩阵求逆]
3640: JC的小苹果 题意:求1到n点权和\(\le k\)的概率 sengxian orz的题解好详细啊 容易想到\(f[i][j]\)表示走到i点权为j的概率 按点权分层,可以DP 但是对于\ ...
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- BZOJ 3270: 博物馆 [概率DP 高斯消元]
http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...
随机推荐
- 在caffe-ssd的环境搭建中遇到报错信息:Makefile:588: recipe for target '.build_release/cuda/src/caffe/layers/softmax_loss_layer.o' failed
错误原因: 1.计算机没有安装GPU 2.有GPU但是NVCCFLAGS设置错误 解决方法: 1.对没有GPU的计算机,需要将Makefile中的CPU之前的#注释去掉,是的caffe运行的处理器进行 ...
- python deque
Deque objects support the following methods: append(x)¶ Add x to the right side of the deque. append ...
- Unity使用协程技术制作倒计时器
先上效果图 图片资源来自http://www.51miz.com/ 1.素材准备 在http://www.51miz.com/搜索png格式的数字图片,用Unity自带的图集制作工具,进行分割.Con ...
- 20155228 2016-2017-2 《Java程序设计》第9周学习总结
20155228 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 整合数据库 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则 ...
- c# 图像呈现控件PictureBox
在c#中可以使用PictureBox控件来呈现图像,图像资源可以来自文件,也可以是存在内存中的位图对象.可以显示本地图像文件或来自网络的图片,也可以来自项目文件中的图像. 从URI加载图像文件. 调用 ...
- Linux基础命令---文本编辑ex
ex ex会启动vim编辑器,它的执行效果和vim –E相同.从ex模式回到普通模式,可以在vim中输入:vim. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.op ...
- Vuejs vm对象详解
Vuejs vm对象详解 vue数据是怎么驱动视图的?一堆数据放在那里是不会有任何作用的,它必须通过我们的View Model(视图模型)才能操控视图. 图中的model其实就是数据,一般我们写成js ...
- ETH跌破400美元大关 一场收割全球的计划完成闭环
ETH跌破400美元大关 一场收割全球的计划完成闭环 三大交易所,ETH的价格均跌下400美元,看空者占比近80%. 在普通人眼里,这可能只是熊市的一个自然表现. 但事实完全不是这样.这本质上一场历时 ...
- zabbix实现电话、短信、邮件报警
该报警方式提前说明:(1)该方式可以实现zabbix免费电话报警以及微信.短信.邮件报警,但有数量限制.详见如下:如数量不能满足需要以及人员需要,可以考虑购买收费版.(2)毕竟是免费版,电话通知要省着 ...
- 怎样从外网访问内网IIS?
本地安装了一个IIS,只能在局域网内访问,怎样从外网也能访问到本地的IIS呢?本文将介绍具体的实现步骤. 准备工作 安装并启动IIS 默认安装的IIS端口是80. 实现步骤 下载并解压holer软件包 ...