UESTC 1330 柱爷与远古法阵【高斯消元】
题目链接【http://acm.uestc.edu.cn/#/problem/show/1330】
题意:有一个长度为L(L <= 300)的长廊,有一人站在最左边,他要到最右边去,他每次可以走1 ~ 6 步,每一次走的步数是随机发生的。并且某些位置有传送门(a,b)表示a位置有个传送门,可以直接到达b,然后求出到达最右边的期望是多少?
题解:首先,我们先列出公式,设dp[i]表示从 i 点到达最右边的期望,则1、dp[L] =0 。2、如果a有传送门b那么dp[a] = dp[b] 。否则 dp[x] = (dp[x+1]+dp[x+2] + dp[x+y])/6+1;( x + y <= L && y <= 6)。化简后就得到,6 * dp[x] - dp[x+1] - dp[x+2] - ... - dp[x+y] == 6。那么我们一共可以列出L个方程,一共有L个未知量,只要用高斯消元解出来就可以了。
注意:1、每个点最多只有一个传送门,2、这道题存在无解的情况,3、这道题精度卡的很高。
#include<bits/stdc++.h>
using namespace std;
typedef long double LB;
const LB eps = 1e-14;
const int maxn = 350 + 15;
LB a[maxn][maxn], x[maxn];
int Guess(int equ, int var)
{
int i, j, k, col, max_r;
for(k = 1, col = 1; k <= equ && col <= var; k++, col++)
{
max_r = k;
for(i = k + 1; i <= equ; i++)
if(fabs(a[i][col] ) > fabs(a[max_r][col])) max_r = i;
if(fabs(a[max_r][col]) < eps ) return 0;//无解
if(k != max_r)
{
for(j = col; j <= var; j++) swap(a[k][j], a[max_r][j]);
swap(x[k], x[max_r]);
}
x[k] /= a[k][col];
for(j = col + 1; j <= var; j++) a[k][j] /= a[k][col];
a[k][col] = 1;
for(i = 1; i <= equ; i++)
if(i != k)
{
x[i] -= x[k] * a[i][col];
for(j = col + 1; j <= var; j++) a[i][j] -= a[k][j] * a[i][col];
a[i][col] = 0;
}
}
return 1;
}
int N, M;
int f[maxn];//表示某点有没有传送门
int main ()
{
scanf("%d %d", &N, &M);
memset(a, 0, sizeof(a));
for(int i = 1; i <= N; i++) f[i] = 0;
for(int i = 1; i <= M; i++)
{
int u, v;
scanf("%d %d", &u, &v);
f[u] = v;
}
for(int i = 1; i < N; i++)
{
a[i][i] = 6.0;
if(f[i])
{
a[i][f[i]] = -6.0;
continue;
}
x[i] = 6.0;
for(int j = 1; j <= 6; j++)
{
if(i + j <= N) a[i][i + j] -= 1.0;
else a[i][i] -= 1.0;
}
}
a[N][N] = 1.0, x[N] = 0;
if(!Guess(N, N)) printf("-1\n");
else printf("%.12Lf\n", x[1]);
return 0;
}
UESTC 1330 柱爷与远古法阵【高斯消元】的更多相关文章
- CDOJ 1330 柱爷与远古法阵(高斯消元)
CDOJ 1330 柱爷与远古法阵(高斯消元) 柱爷与远古法阵 Time Limit: 125/125MS (Java/Others) Memory Limit: 240000/240000K ...
- CDOJ 1330 柱爷与远古法阵【高斯消元,卡精度】
柱爷与远古法阵 Time Limit: 125/125MS (Java/Others) Memory Limit: 240000/240000KB (Java/Others) Submit S ...
- ACM学习历程—UESTC 1219 Ba Gua Zhen(dfs && 独立回路 && xor高斯消元)
题目链接:http://acm.uestc.edu.cn/#/problem/show/1219 题目大意是给了一张图,然后要求一个点通过路径回到这个点,使得xor和最大. 这是CCPC南阳站的一道题 ...
- hdu3949 XOR xor高斯消元
XOR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 【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] ...
- *POJ 1222 高斯消元
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9612 Accepted: 62 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
- hihoCoder 1196 高斯消元·二
Description 一个黑白网格,点一次会改变这个以及与其连通的其他方格的颜色,求最少点击次数使得所有全部变成黑色. Sol 高斯消元解异或方程组. 先建立一个方程组. \(x_i\) 表示这个点 ...
随机推荐
- .net core 集成 autofac.
1. Install Install-Package Autofac Install-Package Autofac.Extensions.DependencyInjection 2.Startup ...
- 【BZOJ】2099: [Usaco2010 Dec]Letter 恐吓信
[题意]给定长度为n和m的两个字符串S和T,要求在字符串S中取出若干段拼成T(可重复取),求最小段数,n,m<=50000. [算法]后缀自动机 || 后缀数组 [题解]对串S建SAM,然后在上 ...
- styled-components真的好吗?
最近在学习react,然后遇到react中css该怎么写这个问题,上知乎上看了好多大牛都说styled-components好用是大势所趋. 但我自己用了感觉体验却很差,我在这里说说我为啥觉得styl ...
- Linux增加swap文件
起因 在阿里云搞了台ECS,但是内存就1个G,操作总是悲剧的卡卡卡,于是就想着增加一点交换文件来缓解一下. 快速添加交换文件 step 1. 生成文件 先填充一个大文件,等会儿当做交换文件用: dd ...
- oracle数据库的date和timestamp类型
1.date类型存储数据的格式为年月日时分秒,可以精确到秒 timestamp类型存储数据的格式为年月日时分秒,可以精确到纳秒(9位) 2.date类型 Date类型的数据可以显示到年月日,也可以显示 ...
- 目标检测-基于Pytorch实现Yolov3(1)- 搭建模型
原文地址:https://www.cnblogs.com/jacklu/p/9853599.html 本人前段时间在T厂做了目标检测的项目,对一些目标检测框架也有了一定理解.其中Yolov3速度非常快 ...
- Android快速入门(转自 农民伯伯: http://www.cnblogs.com/over140/)
前言 这是前段时间用于公司Android入门培训的资料,学习Android三周时间收集整理的,时间仓促,希望能对像我这样还没入门就直接上项目的人一点帮助 :) 声明 欢迎转载,但请保留文章原始出处: ...
- 45.Jump Game II---贪心---2018大疆笔试题
题目链接 题目大意:与55题类似,只是这里要求出跳数. 法一(借鉴):贪心.cur表示当前能到达的最远距离,pre表示上一次能到达的最远距离,每到一个位置更新一次最远距离cur,如果当前位置超过了上一 ...
- URAL 2078~2089
URAL 2078~2089 A - Bowling game 题目描述:给出保龄球每一局击倒的球数,按照保龄球的规则,算出总得分的最小值和最大值. solution 首先是最小值:每一局第一球击倒\ ...
- LINUX内核中的机制OOM
[概念] LINUX内核中有一个机制叫做OOM killer(Out Of Memery killer) 该机制监控内存占用过大,尤其是瞬间消耗大量内存的进程, 为了防止内存被耗尽,所以OOM kil ...