建立方程后直接高斯消元,再把0的区间找出来计算,就可以过(因为实际上这样的复杂度是5次的,且常数小)
(当然这样的复杂度看上去并不太好,考虑优化)
可以发现最后一行的概率都可以用上一行来表示,那么代入上一行的方程后,发现又可以再次代入,最后就求出了第一行

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int t,n,m,dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
4 double f[2005][2005];
5 int id(int x,int y){
6 if ((x<1)||(y<1)||(x>n)||(y>m))return 0;
7 return (x-1)*m+y;
8 }
9 double guess(){
10 for(int ii=n;ii;ii--){
11 for(int i=id(ii,1);i<=id(ii,m);i++){
12 double s=abs(f[i][i]);
13 for(int j=i+1;j<=id(ii,m);j++)s=max(s,abs(f[j][i]));
14 for(int j=i;j<=id(ii,m);j++)
15 if (s==abs(f[j][i])){
16 s=f[j][i];
17 for(int k=id(ii-1,1);k<=id(ii,m);k++)swap(f[j][k],f[i][k]);
18 swap(f[j][id(n,m)+1],f[i][id(n,m)+1]);
19 break;
20 }
21 for(int j=id(ii-1,1);j<=id(ii,m);j++)f[i][j]/=s;
22 f[i][id(n,m)+1]/=s;
23 for(int j=id(ii,1);j<=id(ii,m);j++){
24 if (j==i)continue;
25 s=f[j][i];
26 for(int k=id(ii-1,1);k<=id(ii,m);k++)f[j][k]-=f[i][k]*s;
27 f[j][id(n,m)+1]-=f[i][id(n,m)+1]*s;
28 }
29 }
30 if (ii==1)return f[1][id(n,m)+1];
31 for(int i=id(ii-1,1);i<=id(ii-1,m);i++)
32 for(int j=id(ii,1);j<=id(ii,m);j++){
33 for(int k=id(ii-1,1);k<=id(ii-1,m);k++)f[i][k]-=f[i][j]*f[j][k];
34 f[i][id(n,m)+1]-=f[i][j]*f[j][id(n,m)+1];
35 }
36 }
37 }
38 int main(){
39 while (scanf("%d%d",&n,&m)!=EOF){
40 if ((!n)&&(!m))return 0;
41 memset(f,0,sizeof(f));
42 for(int i=1;i<=n;i++)
43 for(int j=1;j<=m;j++)
44 f[id(i,j)][id(i,j)]=f[id(i,j)][id(n,m)+1]=-1;
45 for(int k=0;k<4;k++)
46 for(int i=1;i<=n;i++)
47 for(int j=1;j<=m;j++)
48 scanf("%lf",&f[id(i,j)][id(i+dx[k],j+dy[k])]);
49 f[id(n,m)][id(n,m)+1]=0;
50 printf("%.8f\n",guess());
51 }
52 }

[bzoj3317]First Knight的更多相关文章

  1. POJ2488A Knight's Journey[DFS]

    A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 41936   Accepted: 14 ...

  2. Knight Moves

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  3. HDU 1372 Knight Moves

    最近在学习广搜  这道题同样是一道简单广搜题=0= 题意:(百度复制粘贴0.0) 题意:给出骑士的骑士位置和目标位置,计算骑士要走多少步 思路:首先要做这道题必须要理解国际象棋中骑士的走法,国际象棋中 ...

  4. [宽度优先搜索] HDU 1372 Knight Moves

    Knight Moves Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  5. HDU 1372 Knight Moves (bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Othe ...

  6. POJ2488-A Knight's Journey(DFS+回溯)

    题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Tot ...

  7. UVA 439 Knight Moves --DFS or BFS

    简单搜索,我这里用的是dfs,由于棋盘只有8x8这么大,于是想到dfs应该可以过,后来由于边界的问题,TLE了,改了边界才AC. 这道题的收获就是知道了有些时候dfs没有特定的边界的时候要自己设置一个 ...

  8. 【POJ 2243】Knight Moves

    题 Description A friend of you is doing research on the Traveling Knight Problem (TKP) where you are ...

  9. hdu Knight Moves

    这道题实到bfs的题目,很简单,不过搜索的方向变成8个而已,对于不会下象棋的会有点晕. #include <iostream> #include <stdio.h> #incl ...

随机推荐

  1. Serverless:这真的是未来吗?(二)

    原文 | https://www.pulumi.com/blog/is_serverless_the_future_part_2/ 作者 | Lee Briggs & Piers Karsen ...

  2. 题解 2020.10.24 考试 T2 选数

    题目传送门 题目大意 见题面. 思路 本来以为zcx.pxj变强了,后来发现是SPJ出问题了...考试的时候感觉有点人均啊...结果自己还是只想出来一半. 我们假设 \(f(x)=(\lfloor\f ...

  3. Python 3.10 正式发布,新增模式匹配,同事用了直呼真香!

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 前几天,也就是 10 月 4 日,Python 发布了 3.10.0 版本,什么?3.9 之后居 ...

  4. mysql update语句的执行流程是怎样的

    update更新语句流程是怎么样的 update更新语句基本流程也会查询select流程一样,都会走一遍. update涉及更新数据,会对行加dml写锁,这个DML读锁是互斥的.其他dml写锁需要等待 ...

  5. git 更新与图形界面

    git 软件更新:git update-git-for-windows 或者 git update gitk 是一个历史记录的图形化查看器. 使用:只需 cd 到一个 Git 仓库,然后键入:gitk ...

  6. JavaCPP快速入门(官方demo增强版)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. python jinja2初见

    吸取了长城杯的教训,学习python-web迫在眉睫. 正常难度的python_template_injection,由于现在没学面向对象,理解原理比较困难,所以先使用简单版复现:并附上正常版的常用p ...

  8. Vite启动后提示Network: use `--host` to expose

    当使用 Vite 构建项目后,发现只有localhost + 端口 服务,没有 IP + 端口服务. 运行npm run dev,终端提示Vite启动后提示Network: use '--host' ...

  9. LeetCode:堆专题

    堆专题 参考了力扣加加对与堆专题的讲解,刷了些 leetcode 题,在此做一些记录,不然没几天就忘光光了 力扣加加-堆专题(上) 力扣加加-堆专题(下) 总结 优先队列 // 1.java中有优先队 ...

  10. [对对子队]Beta阶段项目展示博客

    Beta阶段项目展示博客 1 团队成员的简介和个人博客地址 成员 头像 岗位 博客 个人介绍 黄贤昊 PM 17373253 喜欢玩游戏和做游戏,项目经验基本都和游戏相关,擅长摸鱼,偶尔敬业. 吴桐雨 ...