高斯消元与期望DP
高斯消元可以解决一系列DP序混乱的无向图上(期望)DP
DP序
DP序是一道DP的所有状态的一个排列,使状态x所需的所有前置状态都位于状态x前;
(通俗的说,在一个状态转移方程中‘=’左侧的状态应该在‘=’右侧的所有状态之后)
于是往往只有按DP序转移状态,才可以保证每个状态值的正确性
一道DP的状态序不是唯一的
常见的有:
某些DAG上dp按拓扑序转移;
某些树上DP先转移x点的子树,后转移x;
某些树上DP先转移x,后转移x点的子树;
线性DP左到右或右到左;
区间DP小到大;
某些记忆化搜索的第一次出栈顺序;
概率与期望
自行百度吧~
概率/期望DP
转移时涉及概率的DP,他可以是线性的、树上的、DAG上的、任何形式的;
其标志是转移时涉及概率,
如“状态x有p/q的概率转移到y,有(1-p/q)的概率转移到z”;
一般情况下概率/期望DP除了应该使用浮点数据类型存贮状态、可能可以通过概率有关的知识优化之外,与非概率期望DP没有什么不同;
然而又有一类概率/期望DP则不同;
即一部分DP序混乱的无向图概率/期望DP
无向图概率/期望DP
无向图DP,这里指的是在无向图上DP
无向图概率/期望DP并非一定是DP序混乱的,然而这里只讨论DP序混乱的那一部分;
DP序混乱,往往是指存在两个状态x,y,x可以转移到y,y也可以转移到x;
在非概率/期望DP中不可能存在这种情况——因为这会导致状态值不确定;
然而在概率/期望DP中这种情况却可以存在;
因为如果在此类DP中,存在DP序混乱的情况,一般是x的p/q可以转移到y,y的a/b可以转移到x;
于是经过了无穷次相互转移后,之后的转移增量趋向于无穷小,于是可以认为此时状态的值确定了下来;
于是,有了一种十分显然的想法——迭代相互转移的次数,直到精度符合要求;
然而这种想法是十分幼稚的——迭代层数无法确定,
于是得分的上限取决于你设定的迭代层数会在什么数据范围的情况下导致超时;
得分的下限则完全取决于出题人的心情,这意味着出题人很容易造出可以卡掉迭代层数很高的代码的数据;
于是有了用高斯消元处理DP序混乱的无向图概率/期望DP方法
高斯消元
高斯消元是一种解线性方程组的方法,
这里只介绍高斯消元解n元一次方程组(n元一次方程组是线性方程组的一类)
事实上,高斯消元法与我们数学中常用的消元法类似;
其流程是:
1.选定一个未知数xi,准备把他消去;
2.随便选定一个xi系数不为零的方程Xi,(若没有,则无解或无数解);
3.把其他所有方程都减去Xi的某倍数,促使除了Xi外,所有方程的xi被消去;
4.重复123,(每个未知数,每个方程只被选定一次),直到只剩下一个未知数一个方程;
5.按选定方程的倒序选定方程,不断把已知未知数的值带入其中得到新未知数的值;
有唯一解的条件,至少n个方程,在高斯消元过程中没有被作无解或无数解
代码:
bool flag=true;
double matrix[N+][N+],ans[N+]; void Gauss(int n){
int i,j;
bool fl=false;
for(i=n;i>;i--)
if(matrix[i][n]>eps||matrix[i][n]<-eps){
swap(matrix[i],matrix[n]),fl|=;
break;
}
flag=fl;
if(!flag)return ;
for(i=;i<n;i++)
for(j=;j<=n;j++)
matrix[i][j]-=matrix[n][j]*matrix[i][n]/matrix[n][n];
if(n-)Gauss(n-);
if(!flag)return ;
for(i=;i<n;i++)
matrix[n][]-=matrix[n][i]*ans[i];
ans[n]=matrix[n][]/matrix[n][n];
}
观察代码可以看出其效率为$O(n^3)$
用高斯消元处理期望DP
高斯消元可以处理方程组;
于是列出关于n个状态的n个方程往往可以直接解得状态的值
于是把n个本质不同的状态转移方程列作方程组,用高斯消元求解即可解决一类DP序混乱的概率/期望DP;
例题
JS09有趣的游戏
HN13游走
......
是不是应该写几个题解呢...
延伸
待续......
高斯消元与期望DP的更多相关文章
- LOJ 2542 「PKUWC2018」随机游走 ——树上高斯消元(期望DP)+最值反演+fmt
题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下 ...
- HDU4870_Rating_双号从零单排_高斯消元求期望
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4870 原题: Rating Time Limit: 10000/5000 MS (Java/Other ...
- hdu 4870 rating(高斯消元求期望)
Rating Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- Luogu3232 HNOI2013 游走 高斯消元、期望、贪心
传送门 这种无向图上从一个点乱走到另一个点的期望题目好几道与高斯消元有关 首先一个显然的贪心:期望经过次数越多,分配到的权值就要越小. 设$du_i$表示$i$的度,$f_i$表示点$i$的期望经过次 ...
- 【BZOJ3143】【HNOI2013】游走 && 【BZOJ3270】博物馆 【高斯消元+概率期望】
刚学完 高斯消元,我们来做几道题吧! T1:[BZOJ3143][HNOI2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小 ...
- loj2542 「PKUWC2018」随机游走 MinMax 容斥+树上高斯消元+状压 DP
题目传送门 https://loj.ac/problem/2542 题解 肯定一眼 MinMax 容斥吧. 然后问题就转化为,给定一个集合 \(S\),问期望情况下多少步可以走到 \(S\) 中的点. ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
- 【BZOJ-3270】博物馆 高斯消元 + 概率期望
3270: 博物馆 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 292 Solved: 158[Submit][Status][Discuss] ...
- [ACM] hdu 4418 Time travel (高斯消元求期望)
Time travel Problem Description Agent K is one of the greatest agents in a secret organization calle ...
随机推荐
- 解决org.hibernate.QueryException illegal attempt to dereference collection 异常错误
今天做项目的时候,有两个实体:款式.品牌两者关系是多对多的关联关系,实现的功能是:通过选择款式,显示出该款式的所有品牌.HQL语句如下: 运行时出现这个异常错误:org.hibernate.Query ...
- Java基础梳理(一)
List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高 ...
- execvp php-fpm reload使用的函数
php重启 本质上是调用 execvp("/usr/local/php/sbin/php-fpm"); execvp就是用一个新的进程把自己替换掉,一个进程一旦调用exec类函数, ...
- leetcode 114. 二叉树展开为链表(Flatten Binary Tree to Linked List)
目录 题目描述: 示例: 解法: 题目描述: 给定一个二叉树,原地将它展开为链表. 示例: 给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ ...
- postman创建mocker Server
为了不影响前端开发的进度,一般后端都是先定数据结构,然后写个假接口让前端调用,这样前端就不必等着后端接口开发完成以后再开始了. 届时,前后端以及UI和测试就可以并行,待双方都把各自的逻辑写好了,便可以 ...
- (转) python学习笔记6--fraction
原文:https://blog.csdn.net/lemonwyc/article/details/37592883 fraction模块提供有关有理数的算术表达和计算,实际上就是分数的表达和计算.p ...
- (转)MySQL优化系列
原文:http://blog.csdn.net/jack__frost/article/details/71194208 数据库,后端开发者必学,而且现在以MySQL居多.这个系列将系统化MySQL一 ...
- EF基础知识小记四(数据库=>模型设计器)
EF基础知识小记三(设计器=>数据库)介绍了如何创建一个空设计器模型,并如何将模型同步到数据库的表中,本文则主要介绍如何将一个存在的数据库同步到模型设计器中.为了能快速的模拟这个过程,给出一下建 ...
- spring boot整合RabbitMQ(Fanout模式)
1.Fanout Exchange介绍Fanout Exchange 消息广播的模式,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了routing_key会被忽略. 如上图所示, ...
- PHP中 LFI Local File Include,本地文件包 漏洞
在allow_url_include=On就是远程文件包含了,假设这里为off,那就只能本地包含了. 1. 包含上传文件 只要目标服务器支持上传,不管是jpg,txt,gif等都可以,在其 ...