[bzoj3317]First Knight
建立方程后直接高斯消元,再把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的更多相关文章
- POJ2488A Knight's Journey[DFS]
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 41936 Accepted: 14 ...
- Knight Moves
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- HDU 1372 Knight Moves
最近在学习广搜 这道题同样是一道简单广搜题=0= 题意:(百度复制粘贴0.0) 题意:给出骑士的骑士位置和目标位置,计算骑士要走多少步 思路:首先要做这道题必须要理解国际象棋中骑士的走法,国际象棋中 ...
- [宽度优先搜索] HDU 1372 Knight Moves
Knight Moves Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- HDU 1372 Knight Moves (bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Othe ...
- POJ2488-A Knight's Journey(DFS+回溯)
题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Tot ...
- UVA 439 Knight Moves --DFS or BFS
简单搜索,我这里用的是dfs,由于棋盘只有8x8这么大,于是想到dfs应该可以过,后来由于边界的问题,TLE了,改了边界才AC. 这道题的收获就是知道了有些时候dfs没有特定的边界的时候要自己设置一个 ...
- 【POJ 2243】Knight Moves
题 Description A friend of you is doing research on the Traveling Knight Problem (TKP) where you are ...
- hdu Knight Moves
这道题实到bfs的题目,很简单,不过搜索的方向变成8个而已,对于不会下象棋的会有点晕. #include <iostream> #include <stdio.h> #incl ...
随机推荐
- VS运行时 /MD、/MDd 和 /MT、/MTd之间的区别
程序运行时出现问题,选择的是Release,win64位的模式,并且已经看到了宏定义NDEBUG,但是程序依然进入上面的部分 解决方案是将属性->C/C++->代码生成器->运行库里 ...
- HPE ProLiant 系列服务器Microsoft Windows 2008 R2系统下网卡绑定方法
HPE Network Configuration Utility(以下简称NCU) 网卡绑定工具,用户可以通过该工具很方便的把服务器的多个网卡捆绑到一起以达到容错和增加可用带宽的目的. 1.打开NC ...
- CVPR2021提出的一些新数据集汇总
前言 在<论文创新的常见思路总结>(点击标题阅读)一文中,提到过一些新的数据集或者新方向比较容易出论文.因此纠结于选择课题方向的读者可以考虑以下几个新方向.文末附相关论文获取方式. ...
- 1002 写出这个数 (20 分) java解题
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10^100. 输出格式: 在一行内输 ...
- C语言中while 语句
while的执行顺序 while 循环的执行顺序非常简单,它的格式是: while (表达式) { 语句: } 概念:当表达式为真,则执行下面的语句:语句执行完之后再判断表达式是否为真,如果为真,再次 ...
- 【Java虚拟机6】Java内存模型(Java篇)
什么是Java内存模型 <Java虚拟机规范>中曾试图定义一种"Java内存模型"(Java Memory Model,JMM)来屏蔽各种硬件和操作系统的内存访问差异, ...
- win 常用修复蓝屏,系统比对最后更新20210804
您可以尝试以下方案: 在管理员命令提示符下键入以下命令:Dism /Online /Cleanup-Image /ScanHealth这条命令将扫描全部系统文件并和官方系统文件对比,扫描计算机中的不一 ...
- 航胥:北航教务助手——Beta阶段发布声明
下载地址在文章末尾! 这里是"航胥",一款更想要了解你的北航教务助手 Beta阶段,我们进化了! Beta阶段我们的新功能有: 课程评价功能 所有用户选过的课程都会在课程评价页面进 ...
- the Agiles Scrum Meeting 12
会议时间:2020.4.20 21:00 1.每个人的工作 今天已完成的工作 个人结对项目增量开发组: 自动评测系统基本开发完成,实现个人项目自动评测功能 issues: 个人结对功能开发组:开发自动 ...
- dice_game攻防世界进阶区
dice_game XCTF 4th-QCTF-2018 前言,不得不说,虽然是个简单题但是还是要记录一下,来让自己记住这些东西. 考察的知识点是: 1.cdll_loadlibrary加载对应库使得 ...