非常好的题!期望+建矩阵是简单的,但是直接套高斯消元会T

所以消元时要按照矩阵的形态 进行优化

#include<bits/stdc++.h>
using namespace std; const int maxn = ;
const int maxm = *;
const double esp = 1e-; int n,m,r,dir[][]={{,},{,},{-,},{,-}};
double a[maxm][maxm],b[maxm],p[maxn][maxn][]; //优化后的高斯消元,考虑矩阵的形态,我们只要求出a[0][0]和b[0]的值
//并且a[r-1][r-1]和b[r-1]是确定的,那么就可以从r-1行往上消元
//不断把主元消去即可,主元前面的未知项的系数不用考虑直接修改即可
//和主元i相关的行只有向上的m行,同时主元所在的行未知项系数也只有m个
//所以 复杂度为 O(nm^3)
double gauss(){
for(int i=r-;i>=;i--){
int down=max(,i-m);
for(int j=i-;j>=down;j--){//一行行往上消元
double rate=a[j][i]/a[i][i];
for(int k=i;k>=down;k--)
a[j][k]-=a[i][k]*rate;
b[j]-=rate*b[i];
}
}
return b[]/a[][];
} int main(){
while(scanf("%d%d",&n,&m),n){
memset(a,,sizeof a);
memset(b,,sizeof b);
memset(p,,sizeof p); for(int k=;k<;k++)
for(int i=;i<n;i++)
for(int j=;j<m;j++)
scanf("%lf",&p[i][j][k]);
r=n*m;
for(int i=;i<n;i++)
for(int j=;j<m;j++){
int id=i*m+j;
b[id]=a[id][id]=;
if(i==n-&&j==m-)continue;
for(int k=;k<;k++){
int x=i+dir[k][];
int y=j+dir[k][];
if(x<||x>=n || y<||y>=m)continue;
a[id][x*m+y]-=p[i][j][k];
}
}
b[r-]=;
printf("%lf\n",gauss());
}
}

期望dp+高斯消元优化——uvalive4297好题的更多相关文章

  1. BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元

    BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机 ...

  2. HDU 2262 Where is the canteen 期望dp+高斯消元

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2262 Where is the canteen Time Limit: 10000/5000 MS ...

  3. hdu4418 Time travel 【期望dp + 高斯消元】

    题目链接 BZOJ4418 题解 题意:从一个序列上某一点开始沿一个方向走,走到头返回,每次走的步长各有概率,问走到一点的期望步数,或者无解 我们先将序列倍长形成循环序列,\(n = (N - 1) ...

  4. 【noi2019集训题1】 脑部进食 期望dp+高斯消元

    题目大意:有n个点,m条有向边,每条边上有一个小写字母. 有一个人从1号点开始在这个图上随机游走,游走过程中他会按顺序记录下走过的边上的字符. 如果在某个时刻,他记录下的字符串中,存在一个子序列和S2 ...

  5. LightOJ 1151 Snakes and Ladders 期望dp+高斯消元

    题目传送门 题目大意:10*10的地图,不过可以直接看成1*100的,从1出发,要到达100,每次走的步数用一个大小为6的骰子决定.地图上有很多个通道 A可以直接到B,不过A和B大小不确定   而且 ...

  6. P4457-[BJOI2018]治疗之雨【期望dp,高斯消元】

    正题 题目链接:https://www.luogu.com.cn/problem/P4457 题目大意 开始一个人最大生命值为\(n\),剩余\(hp\)点生命,然后每个时刻如果生命值没有满那么有\( ...

  7. 洛谷 P5249 - [LnOI2019]加特林轮盘赌(期望 dp+高斯消元)

    题面传送门 期望真 nm 有意思,所以蒟蒻又来颓期望辣 先特判掉 \(P_0=0\) 的情况,下面假设 \(P_0\ne 0\). 首先注意到我们每次将加特林对准一个人,如果这个人被毙掉了,那么相当于 ...

  8. ZJUT 1423 地下迷宫(期望DP&高斯消元)

    地下迷宫 Time Limit:1000MS  Memory Limit:32768K Description: 由于山体滑坡,DK被困在了地下蜘蛛王国迷宫.为了抢在DH之前来到TFT,DK必须尽快走 ...

  9. Codeforces.24D.Broken robot(期望DP 高斯消元)

    题目链接 可能这儿的会更易懂一些(表示不想再多写了). 令\(f[i][j]\)表示从\((i,j)\)到达最后一行的期望步数.那么有\(f[n][j]=0\). 若\(m=1\),答案是\(2(n- ...

随机推荐

  1. 微信小程序之模板消息推送

    最近在用sanic框架写微信小程序,其中写了一个微信消息推送,还挺有意思的,写了个小demo 具体见官方文档:https://developers.weixin.qq.com/miniprogram/ ...

  2. python--面向对象:封装

    广义上面向对象的封装 :代码的保护,面向对象的思想本身就是一种只让自己的对象能调用自己类中的方法 狭义上的封装 ——> 面向对象的三大特性之一属性 和 方法都藏起来 不让你看见 "&q ...

  3. 函数隐藏参数 — this

    解析器在调用函数每次都会向函数内部传递一个隐含的参数,这个隐含的参数就是this this指向的是一个对象,这个对象我们成为函数执行的上下文对象 根据函数的调用方式不用,this会指向不同的对象: 1 ...

  4. 在Nginx/Tengine服务器上安装证书

    可以从SSL证书服务控制台下载证书安装到Nginx/Tengine服务器上. 环境:以CentOS 7.Nginx 1.15.6为例. 证书名称以domain name为示例,如证书文件名称为doma ...

  5. How to enter special characters like “&” in oracle database? [duplicate]

    SQL> set define off; or use Try 'Java_22 '||'&'||' Oracle_14'

  6. Struts2.xml的配置

    框架初始知识: Servlet  VS   Filter Filter的性能更强,因为Servlet能实现的,Filter都能实现. Filter还有拦截资源的作用 是Servlet所不能实现的. F ...

  7. JavaScript: 变量提升和函数提升

    第一篇文章中提到了变量的提升,所以今天就来介绍一下变量提升和函数提升.这个知识点可谓是老生常谈了,不过其中有些细节方面博主很想借此机会,好好总结一下. 今天主要介绍以下几点: 1. 变量提升 2. 函 ...

  8. Delphi 中多线程同步的一些处理方法

    Delphi 中多线程同步的一些处理方法   当创建了多个线程,并且多个线程都要访问同一资源,,就有可能出现混乱,于是用Synchronize来控制,使同一时间只有一个线程使用那部分资源,Synchr ...

  9. thinkphp 上传安全

    网站的上传功能也是一个非常容易被攻击的入口,所以对上传功能的安全检查是尤其必要的. 大理石平台支架 系统提供的上传类Think\Upload提供了安全方面的支持,包括对文件后缀.文件类型.文件大小以及 ...

  10. 数学相关比较 牛顿迭代法求开方 很多个n的平方分之一

    牛顿迭代法求开方 牛顿迭代法 作用: 求f(x) = 0 的解 方法:假设任意一点 x0, 求切线与x轴交点坐标x1, 再求切线与x轴交点坐标x2,一直重复,直到f(xn) 与0的差距在一个极小的范围 ...