非常好的题!期望+建矩阵是简单的,但是直接套高斯消元会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. Vue番外篇-路由进阶(一)

    Vue的router默认是 export default new Router({ mode: 'history', routes: [ { path: '/', name: 'HelloWorld' ...

  2. log4cplus TimeBasedRollingFileAppender

    参考自:http://blog.csdn.net/u010607621/article/details/54944696 对于TimeBasedRollingFileAppender 这个日志appe ...

  3. docker启动elasticsearch异常Failed to create node environment(解决)

    异常说是创建节点环境失败,操作/usr/share/elasticsearch/data/nodes的IO错误,尝试给此目录添加读写权限后,依旧没什么**用,灵机一动是不是挂载目录没有权限导致的? c ...

  4. 14. static(静态) 关键字

    1.修饰成员变量 1)定义:数据需要被共享给所有对象使用使用static修饰(全局变量) 2)注意: 1.用static中创建的成员变量在内存中只有一份 2.千万不要为了方便访问数据而使用static ...

  5. redis集群报错:(error) MOVED 5798 127.0.0.1:7001

    原因 这种情况一般是因为启动redis-cli时没有设置集群模式所导致. 解决方案 启动时使用-c参数来启动集群模式,命令如下: redis-cli -c -p 7000 测试 127.0.0.1:7 ...

  6. 线段树优化dp——牛客多校第一场I(好题)

    和两天做了两道数据结构优化dp的题,套路还是差不多的 题解链接! https://www.cnblogs.com/kls123/p/11221471.html 一些补充 其实这道题的dp[i]维护的不 ...

  7. windows启动redis失败

    # Warning: no config file specified, using the default config. In order to specify a config file use ...

  8. NX二次开发-创建CSYS坐标系UF_CSYS_create_csys

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> #include <uf_mtx.h> UF_initialize( ...

  9. NX二次开发-UFUN将工程图中的点坐标映射到建模绝对坐标UF_VIEW_map_drawing_to_model

    #include <uf.h> #include <uf_ui.h> #include <uf_draw.h> #include <uf_view.h> ...

  10. CSS 圣杯布局

    前端的两个经典布局想必大家都有多了解--圣杯布局和双飞翼布局,因为它既能体现你懂HTML结构又能体现出你对DIV+CSS布局的掌握. 事实上,圣杯布局其实和双飞翼布局是一回事.它们实现的都是三栏布局, ...