cf113D. Museum(期望 高斯消元)
题意
Sol
设\(f[i][j]\)表示Petya在\(i\),\(Vasya\)在\(j\)的概率,我们要求的是\(f[i][i]\)
直接列方程高斯消元即可,由于每个状态有两维,因此时间复杂度为\(O(n^6)\)
注意不能从终止节点转移而来
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2333;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int N, M, a, b, Lim;
double p[MAXN], f[MAXN][MAXN], E[MAXN][MAXN], deg[MAXN];
vector<int> v[MAXN];
int id[MAXN][MAXN], tot;
void Pre() {
f[id[a][b]][Lim + 1] = -1;
for(int i = 1; i <= N; i++) {
for(int j = 1; j <= N; j++) {
int now = id[i][j];
--f[now][now];//tag
if(i != j) f[now][now] += p[i] * p[j];
for(auto &x : v[i]) {
for(auto &y : v[j]) {
if(x == y) continue;
int nxt = id[x][y];
f[now][nxt] += (1.0 - p[x]) * (1.0 - p[y]) / deg[x] / deg[y];
}
}
for(auto &x : v[i]) {
int nxt = id[x][j];
if(x == j) continue;
f[now][nxt] += (1.0 - p[x]) * p[j] / deg[x];
}
for(auto &y : v[j]) {
int nxt = id[i][y];
if(i == y) continue;
f[now][nxt] += p[i] * (1.0 - p[y]) / deg[y];
}
}
}
}
void Gauss() {
for(int i = 1; i <= Lim; i++) {
int mx = i;
for(int j = i + 1; j <= Lim; j++) if(f[j][i] > f[mx][i] && f[j][i] != 0) swap(j, mx);
if(mx != i) swap(f[i], f[mx]);
// assert(fabs(f[i][i] < 1e-13));
for(int j = 1; j <= Lim; j++) {
if(i == j) continue;
double p = f[j][i] / f[i][i];
for(int k = i; k <= Lim + 1; k++) f[j][k] -= f[i][k] * p;
}
}
for(int i = 1; i <= Lim; i++) f[i][i] = f[i][Lim + 1] / f[i][i];
}
int main() {
N = read(); M = read(); a = read(); b = read(); Lim = N * N;
for(int i = 1; i <= M; i++) {
int x = read(), y = read();
v[x].push_back(y); v[y].push_back(x);
deg[x]++; deg[y]++;
}
for(int i = 1; i <= N; i++) scanf("%lf", &p[i]);
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
id[i][j] = ++tot;
Pre();
Gauss();
for(int i = 1; i <= N; i++) printf("%.10lf ", f[id[i][i]][id[i][i]]);
return 0;
}
cf113D. Museum(期望 高斯消元)的更多相关文章
- 【BZOJ】3143: [Hnoi2013]游走 期望+高斯消元
[题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解] ...
- 【BZOJ】2337: [HNOI2011]XOR和路径 期望+高斯消元
[题意]给定n个点m条边的带边权无向连通图(有重边和自环),在每个点随机向周围走一步,求1到n的期望路径异或值.n<=100,wi<=10^9. [算法]期望+高斯消元 [题解]首先异或不 ...
- [BZOJ3143][HNOI2013]游走(期望+高斯消元)
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3576 Solved: 1608[Submit][Status ...
- 【BZOJ 3143】【Hnoi2013】游走 期望+高斯消元
如果纯模拟,就会死循环,而随着循环每个点的期望会逼近一个值,高斯消元就通过列方正组求出这个值. #include<cstdio> #include<cctype> #inclu ...
- [HNOI2013]游走 期望+高斯消元
纪念首道期望题(虽说绿豆蛙的归宿才是,但是我打的深搜总觉得不正规). 我们求出每条边的期望经过次数,然后排序,经过多的序号小,经过少的序号大,这样就可以保证最后的值最小. 对于每一条边的期望经过次数, ...
- UVa 10828 Back to Kernighan-Ritchie (数学期望 + 高斯消元)
题意:给定一个 n 个结点的有向图,然后从 1 结点出发,从每个结点向每个后继结点的概率是相同的,当走到一个没有后继结点后,那么程序终止,然后问你经过每个结点的期望是次数是多少. 析:假设 i 结点的 ...
- BZOJ2337: [HNOI2011]XOR和路径(期望 高斯消元)
题意 题目链接 Sol 期望的线性性对xor运算是不成立的,但是我们可以每位分开算 设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值 转移方程为 \[f[i] = ...
- BZOJ.3143.[HNOI2013]游走(概率 期望 高斯消元)
题目链接 参考 远航之曲 把走每条边的概率乘上分配的标号就是它的期望,所以我们肯定是把大的编号分配给走的概率最低的边. 我们只要计算出经过所有点的概率,就可以得出经过一条边(\(u->v\))的 ...
- BZOJ 3143 游走(贪心+期望+高斯消元)
一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...
随机推荐
- Smart/400开发上手4: 调试Cobol代码 (DEBUG with QBATCH)
Step1:Compile Cobol source CB TIM07 using *SRCDBG option例如:CB MEMBER(TIM07) OPTION(*SRCDBG) WORKU(TI ...
- netcore高性能Web服务器Kestrel分析
Kestrel是aspnetcore中的web服务器之一,其本身有跨平台,轻量级,高性能的特点 在 ryzen 1600 12核cpu 测试环境中,瞬间每秒处理请求数能达到2w5以上,与netty不相 ...
- 用SpringSecurity从零搭建pc项目-02
参照这一篇文章吧,比如你不需要做的那么通用,取其中一部分代码即可. https://www.cnblogs.com/lihaoyang/p/8491792.html
- 03-03:springBoot 整合thymeleaf
thymeleaf 语法详解1.变量输出: th:text :在页面中输出某个值 th:value :将一个值放到input标签中的value中.2.判断字符串是否为空 ①:调用内置对象一定要用# ② ...
- VMware虚拟机克隆Linux(CentOS)系统后找不到eth0网卡的问题(图文详解)
问题现象: 有时候,会使用VMware虚拟机的的克隆功能,快速的复制已安装好的Linux系统. 可是克隆完之后,会发现没有eth0网卡. 解决办法: 1.编辑/etc/udev/rules.d/70 ...
- JSP -- 从甲骨文开始
1.Oracle10gForVistaX64下载地址:http://download.oracle.com/otn/nt/oracle10g/10204/10204_vista_w2k8_x64_pr ...
- spring boot实现ssm(1)功能
前面完成了ssm的整合, 整个过程可以说很繁杂, 各种配置, 很容易让人晕掉. 这里使用spring boot 的方式来实现ssm(1)中的功能. 一. 建项目 1. 使用 idea 来创建 spri ...
- postgresql逻辑结构--用户及权限管理(七)
一.用户和角色 二.创建用户和角色 三.权限管理 四.
- xml Schema include
first.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs=&q ...
- rails中accepts_nested_attributes_for应用
Model: class Blog < ActiveRecord::Base has_many :strip_rules accepts_nested_attributes_for :strip ...