高斯消元又弄了半天。。

注意只要能建立矩阵,那就必定有解,所以高斯消元里可以直接return 1

#include<bits/stdc++.h>
using namespace std; const int maxn = ;
const double esp = 1e-; int n,m,x,y,d;
double p[maxn],a[maxn][maxn],b[maxn];
int equ,var; int Gauss(){
for(int i=;i<n;i++){
int maxr=i;
for(int j=i+;j<n;j++)
if(fabs(a[j][i])>fabs(a[maxr][i]))
maxr=j;
if(fabs(a[maxr][i])<esp)continue;
if(maxr!=i)
swap(a[maxr],a[i]);swap(b[maxr],b[i]); for(int j=i+;j<n;j++){
if(fabs(a[j][i])<esp)continue;
double rate=a[j][i]/a[i][i];
for(int k=i;k<n;k++)
a[j][k]-=rate*a[i][k];
b[j]-=rate*b[i];
}
}
for(int i=n-;i>=;i--){
if(fabs(a[i][i])<esp)continue;
for(int j=i+;j<n;j++)
b[i]-=a[i][j]*b[j];
b[i]/=a[i][i];
}
return ;
} int id[maxn],cnt;
void bfs(int s){
memset(id,-,sizeof id);
cnt=;
queue<int>q;
q.push(s);id[s]=cnt++;
while(q.size()){
int x=q.front();q.pop();
for(int i=;i<=m;i++){
if(fabs(p[i])<esp)continue;
int y=(x+i)%n;
if(id[y]==-)
q.push(y),id[y]=cnt++;
}
}
} int main(){
int t;cin>>t;
while(t--){
scanf("%d%d%d%d%d",&n,&m,&y,&x,&d); for(int i=;i<=m;i++)
scanf("%lf",&p[i]),p[i]/=;
if(x==y){puts("0.00");continue;} n=*(n-);
if(d==)x=n-x;
bfs(x);
if(id[y]==- && id[n-y]==-){
puts("Impossible !");continue;
}
equ=var=cnt; memset(a,,sizeof a);
memset(b,,sizeof b);
for(int i=;i<n;i++){
if(id[i]==-)continue;
a[id[i]][id[i]]=;
if(i==y || i==n-y)continue;//到了终点y
for(int j=;j<=m;j++){
int y=(i+j)%n;
if(id[y]!=-){
a[id[i]][id[y]]-=p[j];
b[id[i]]+=j*p[j];
}
}
}
if(Gauss())
printf("%.2lf\n",b[id[x]]);
else printf("Impossible !\n");
}
}

期望dp+高斯消元+bfs——hdu4418的更多相关文章

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

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

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

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

  3. HDU4418 Time travel(期望dp 高斯消元)

    题意 题目链接 Sol mdzz这题真的太恶心了.. 首先不难看出这就是个高斯消元解方程的板子题 \(f[x] = \sum_{i = 1}^n f[to(x + i)] * p[i] + ave\) ...

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

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

  5. 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 ...

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

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

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

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

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

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

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

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

随机推荐

  1. 谁说编译器不SB

    我有这么一段代码,我使用的是VS2010IDE,直接编译Release模式,开O2,谁能猜到编译器怎么给我编的 typedef HRESULT (__stdcall *FTSHGetFolderLoc ...

  2. transport error 202: bind failed: Address already in use

    background: I have terminated some test debugger without properly saying goodbye. the JDWP didn't cl ...

  3. 完美编译街机模拟器MAME(Android版)基于MAME4all

    重新编译MAME4droid源码 github上开源项目MAME4all可将MAME模拟器运行在iOS和Android上,还有一个比较有名的叫MAME4droid(MAME for android), ...

  4. Linux 父子进程实现复制文件内容到另一个文件内

    1. 子进程先拷贝前一半 ,父进程一直阻塞到子进程拷贝完再拷贝后一半 /* 子进程先拷贝前一半文件,父进程先阻塞等待子进程拷贝完前一半内容, * 然后父进程在拷贝,后一半内容 * */ #includ ...

  5. 安装和使用pyspider框架时遇到的问题

    安装pyspider, 直接cmd中输入 pip install pyspider, 而后提示报错 从网上找到解决方法,pycurl需要根据python版本采用wheel方法安装. 下载链接为http ...

  6. 二分法的应用:最大化最小值 POJ2456 Aggressive cows

    /* 二分法的应用:最大化最小值 POJ2456 Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...

  7. Django -- 分页 -- 批量导入

    Django --  分页 分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返 ...

  8. NX二次开发-UFUN拾取平面对话框UF_UI_specify_plane

    #include <uf.h> #include <uf_ui.h> UF_initialize(); //拾取平面对话框 ] = { , , , , , , , , }; ] ...

  9. Linux命令(1):date

    查看时间: date "+%Y-%m-%d %H:%M:%S" 参数说明: %n : 下一行 %t : 跳格 %H : 小时(00..23) %I : 小时(01..12) %k ...

  10. 从[id setValue: forKey:]了解KVC

    <Objective-C基础教程> P224页有详细介绍 下边是apple官网的简单介绍 和一个应用的例子. KVC就是Key-value coding,大意是允许通过一个Key来读写一个 ...