hdu4579 Random Walk

Seminar《Fast Random Walk with Restart and Its Applications》 Optimization about inverse of big matrix though partition and low rank approximation by making use of the linear and community like structure of matrix. 阅读详情

题目:

Yuanfang is walking on a chain. The chain has n nodes numbered from 1 to n. Every second, he can move from node i to node j with probability: 


c(i,j) is an element in a given parameter matrix which is n×m. (1 <= c(i, j) <= 9) 
Yuanfang wants to know the expectation time for him to walk from node 1 to node n.

Input
There are no more than 10 test cases. 
In each case, there are two integers n (2 <= n <= 50000), m (1 <= m <= 5), in the first line, meaning that there are n nodes and the parameter matrix is n×m . There are m integers in each of the next n lines which describe the parameter matrix . 
The input ends with 0 0. 

Output
For each case, output the expectation time for Yuanfang to walk from node 1 to node n in one line. The answer should be rounded to 2 digits after decimal point.
Sample Input
3 1
1
1
1
5 2
1 2
2 1
3 2
2 3
1 3
0 0
Sample Output
6.94
8.75

思路:设dp[i]表示从i到n的步数期望值

那么dp[n]=0

列出n个变元的n个方程,这样就能用高斯消元解出来了。

代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<numeric>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define INF 0x3f3f3f3f
#define mm(a,b) memset(a,b,sizeof(a))
#define PP puts("*********************");
template<class T> T f_abs(T a){ return a > 0 ? a : -a; }
template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
// 0x3f3f3f3f3f3f3f3f
// 0x3f3f3f3f

const int maxn=5e4+50;
const double eps=1e-6;
double c[maxn][6],p[maxn][11];
double a[maxn][11],b[maxn];
double dp[maxn];
int main(){

    int n,m;
    while(~scanf("%d%d",&n,&m)){
        if(!n&&!m) break;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                scanf("%lf",&c[i][j]);
        for(int i=1;i<n;i++){
            double sum=1,s=0;
            for(int j=1;j<=m;j++)
                sum+=c[i][j];
            for(int j=1;j<=m&&i-j>=1;j++){
                p[i][m-j]=0.3*c[i][j]/sum;
                s+=p[i][m-j];
            }
            for(int j=1;j<=m&&i+j<=n;j++){
                p[i][m+j]=0.7*c[i][j]/sum;
                s+=p[i][m+j];
            }
            p[i][m]=-s;
            b[i]=-1;
        }
        for(int i=1;i<n;i++){
            int L=max(1,i-m);
            int R=min(n,i+m);
            for(int j=L;j<i;j++){
                if(f_abs(p[i][m+j-i])<=eps) continue;
                double t=p[i][m+j-i]/a[j][1];
                for(int k=1;k<=m+1&&j+k-1<=n;k++){
                    p[i][m+j-i+k-1]-=t*a[j][k];
                }
                b[i]-=t*b[j];
            }
            for(int j=1;j<=R-i+1;j++)
                a[i][j]=p[i][m+j-1];
        }
        dp[n]=0;
        for(int i=n-1;i>=1;i--){
            for(int j=2;j<=m+1&&i+j-1<=n;j++)
                b[i]-=a[i][j]*dp[i+j-1];
            dp[i]=b[i]/a[i][1];
        }
        printf("%.2f\n",dp[1]);
    }
    return 0;
}



Random Walk 挑战程序设计竞赛 期望值和方程组 题目来自《挑战程序设计竞赛》4.1更加复杂的数学问题 这题其实就是ZJUT 1423,然而ZJUT似乎挂了。。。 1.题目详情 有一个N*M的格子,从(0,0)出发,每一步朝着上下左右四个格子中可以移动的格子等概率的移动。另外有些格子中有石头,因此无法移至这些格子。求第一次到达(N-1,M-1)格子的期望步数。题目假定至少存在一条从(0,0)出发到格子(N-1,M-1)的路径 限制条件 阅读详情

相关推荐

Random Walks 标准程序,MATLAB程序,调试已通过,直接可用

Random Walker 标准程序,MATLAB程序,调试已通过,直接可用

HDU 4579 Random Walk (解方程)

转载请注明出处,谢谢http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents    by---cxlove 题意 :n个位置,每次可以向前走1-m步或者向后者1-m步,或者不动,概率都可以计算出来。问从1走到n的期望步数。 http://acm.hdu.edu.cn/showproblem.php?pid=4579 由于m非常小,只有5。所以用d

窝不是爱酱,喵~~~~ 3274

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

HDU 4579

题意:           有n个节点,要从第一个节点移动到第n个节点,每次移动可能前进或者后退m步,概率通过给出的n×m的矩阵计算,问从第一个点道第n个点所走步数的数学期望。 思路:           n个未知数,设F[i]表示从第i点道第n点的期望的步数,则F[n] = 0, 可以列出n-1个F[i]和其他的F[]关系的方程。          n有50000,直接消元不仅会

tanmlh的专栏 640

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

别再对着数据手册发愁了!用HFSS 2023 R2搞定ESP32-C3板载天线的阻抗匹配

本文详细介绍了如何利用HFSS 2023 R2进行ESP32-C3板载天线的阻抗匹配优化,解决实际PCB设计中常见的性能偏差问题。通过智能模型导入、科学参数扫描和量化优化流程,显著提升天线性能,适用于WIFI和蓝牙应用场景。

weixin_42523543的博客 447

hdu 4579(稀疏矩阵消元(每行稀疏元连续))

本题目是典型的建立方程组用高斯消元法求解。 但是问题在于方程组有n个,未知数有n个,直接上模板会超时,那么手写个消元就可以了,对高斯消元每行的操作对于本题目都可以降到o(m)。 #include #include #include #include #include using namespace std; #define rep(i,n) for(int i=0;i<(int)n;

playwfun的专栏 1759

低功耗和UPF介绍

参考[UPF]低功耗(Low Power Design)and UPF介紹

青春易逝,愿不负昭华,期待梦与远方 1万+

HDU 4579 Play Game

Play Game  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 133    Accepted Submission(s): 85 Problem Description Alice and Bo

iCpC之旅 1049

【定位教程2----旋转中心标定之方法一】

【定位教程2----旋转中心标定之方法一】

Quintin 3万+

导航系统 | 全球四大卫星导航系统(2025)核心能力对比分析

北斗系统通过GEO卫星(80°E、110.5°E、140°E)实现区域增强,其IGSO卫星在亚太地区形成"8"字形轨迹,使该区域可见卫星数量比GPS多4-6颗,显著提升复杂环境下的定位可用性[13]。北斗短报文功能在2025年云南地震救援中发挥关键作用,被困人员通过北斗终端发送120字求救信息,实现"位置+状态"一体化上报,救援响应时间缩短40%[15]。北斗通过三频信号(B1C/B2a/B3)消除电离层延迟误差,在城市峡谷环境下定位连续性达99.98%,优于GPS的99.95%[5]。

尘世冰封的专栏 2611

hdu 4579 博弈+区间dp

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> #include <...

weixin_30621919的博客 145

喷涂机器人系列编程:ABB IRB 5500_(7).喷涂质量控制与优化

通过编程手段对ABB IRB 5500喷涂机器人进行质量控制和优化,可以显著提高喷涂的均匀性和附着力,减少涂层缺陷。具体的方法包括喷涂参数的调整、路径规划的优化、喷涂效果的检测与反馈,以及喷涂参数的动态调整。综合评估系统可以进一步确保喷涂质量的稳定性和一致性,帮助汽车制造企业提高产品质量和生产效率。

zhubeibei168的博客 851

hdu 4579 Random Walk 概率DP

思路:由于m非常小,只有5。所以用dp[i]表示从位置i出发到达n的期望步数。 那么dp[n] = 0 dp[i] = sigma(dp[i + j] * p (i , i + j)) + 1 . (-m <= j <= m) 从高位向低位暴力消元,每次消去比他高的变量。 如 dp[i] = a1 * dp[i - 1] + a2 * dp[i - ...

weixin_30846599的博客 160

如何选择深度强化学习算法:MuZero/SAC/PPO/TD3/DDPG/DQN/等算法

如何选择深度强化学习算法:MuZero/SAC/PPO/TD3/DDPG/DQN/等算法

丨汀、的博客 5221

人工智能训练师三级·模型生命周期真题40题|训练→评估→调优全链路通关

本文为人工智能训练师三级考试真题解析系列第2篇,聚焦模型生命周期全链路(训练→评估→调优)。内容包含40道精选真题,覆盖数据划分、模型训练、评估指标、超参数调优4个核心阶段。重点考察:1)数据集的合理划分方法(留出法、交叉验证);2)模型训练的基本原理;3)关键评估指标(准确率、召回率、F1等)的应用场景;4)超参数调优技术(网格搜索、随机搜索等)。通过真题解析帮助考生系统掌握模型生命周期的闭环迭代方法论,提升从数据准备到模型优化的全流程实践能力。适合备考人工智能训练师三级认证的考生学习参考。

白话机器学习 88

HDU 4579 Random Walk (解方程组)

Random Walk Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others)Total Submission(s): 81    Accepted Submission(s): 35 Problem Description Yuanfang is walking on a cha...

weixin_33860147的博客 181

DMDiff(2025):一种基于SAR光学数据融合的双分支多模态条件引导扩散模型-k学长深度学习专栏

DMDiff提出了一种基于扩散模型的多模态遥感图像去云方法,通过双分支网络分别提取SAR的结构信息和光学图像的光谱特征,再利用跨模态注意力机制实现特征融合。创新性地采用IAP策略直接预测无云图像而非噪声,有效解决了传统方法在遥感图像处理中易出现的光谱失真问题。实验表明该方法在PSNR等指标上显著优于现有技术,但存在计算量大、生成速度慢等不足。未来可结合加速采样策略和几何约束进一步优化。

421

HDU1142A Walk Through the Forest

A Walk Through the ForestTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9534    Accepted Submission(s): 3515Problem Description Jimmy experienc...

Mr.zhou 204

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

HDU Walk (概率DP)

HDU Walk (概率DP):http://acm.hdu.edu.cn/showproblem.php?pid=5001 题面描述: Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 996    Accepted Sub

而濡木染 678

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU 3364 Lanterns 高斯消元(水 异或方程

题目链接:点击打开链接 题意: 给定n盏灯,m个开关 下面m行给出每个开关可以控制哪些灯(即按下此开关,这些灯的状态会改变) 下面q个询问:一行一个询问,一个询问n个数字表示灯的最终状态 问从全暗到这个状态的方案数(一个开关只能按一次) n条方程,等式右边就是输入的灯的状态。 m个未知数,表示每个开关是否按下,系数就是这个开关能否影响到那盏灯 解完方程后首先判断系数矩阵的秩是否和增

九野的博客 1678

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

高斯消元求期望 Random Walk (浮点数Gauss模板 挑战P288)

从(0,0)出发,可上下左右移动,不能移动到#处。 求第一次到达(N-1,M-1)格子的期望步数。数据至少有1条能从(0,0)到达(N-1,M-1)的路径。 3 10 .#...#...# .#.#.#.#.# ...#...#.. 10 10 .......... .......... .......... .......... .......... ..

我的指针和我一样找不到对象 778

HDU-1050-Moving Tables(C++ && 贪心初步)

Moving Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23147    Accepted Submission(s): 7779 Problem Description The famous

保持对编程的热情! 1656

HDU-4597 Play Game (区间DP)

设dp[i][j][k][l]表示先手从a数组区间[i,j]中以及b数组区间[k,l]中能选得的最大数字和 则dp[i][j][k][l]可由四个状态转移而来: ①先手拿a[i],由dp[i+1][j][k][l]转移而来,即 a[i]+sum(i+1,j,k,l)-dp[i+1][j][k][l]; ②先手拿a[j],由dp[i][j-1][k][l]转移而来,即 a[j]+sum(i,j-1,k,l)-dp[i][j-1][k][l]; ③先手拿b[k],由dp[i][j][k+1][l]转移而来,即

idealism_xxm的专栏 631

高斯列主元素消元法

原理: 先将第一列最大元素所在行放在首行(第一个主元素上),用该最大元素将第一列其他元素变为零; 再比较首元素被消为零的行的第二个元素,将大的放在除第一行外的首行(即第一行(变换后的)进行一次消元后就为透明的了,不再参加运算),重复上述步骤。 最后带回求解。 #include "stdafx.h" #include "stdio.h" #include "math.h" int main(...

Li Qing Xin's blog 6562
上一篇: CodeForces - 338D GCD Table 同余方程组
下一篇: SGU - 200 Cracking RSA 高斯消元
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值