2013ACM-ICPC杭州赛区全国邀请赛——Random Walk
pid=4579" style="background-color:rgb(51,255,51)">题目链接
- 题意:
n个点。依照题中给的公式能够求出随意两个点转移的概率。求从1到n的期望转移次数 - 分析:
设dp[i]为从i到n的期望,那么能够得到公式dp[i] = sigma(dp[i + j] * p(i + j, i)) + 1。1 <= j <= m
把这个式子展开来:dp[i - m] * p(i - m, i) + dp[i - m + 1] * dp(i - m + 1, i) + ... + dp[i] * p(i, i) + ... + dp[i + m] * p(i + m, i) = dp[i]
展开p(i, i),化简:dp[i - m] * p(i - m, i) + dp[i - m + 1] * dp(i - m + 1, i) + ... + dp[i] * p‘(i, i) + ... + dp[i + m] * p(i + m, i) = -1(注意p'(i, i)和题目中有所不同了,等与p(i, i) - 1)
事实上这里也能够发现。题目中的p(i, i)给的还是比較有特点的,有一个常数1,这样在列方程的时候才干够消元使得方程右边是一个常数
解方程的时候,首先注意dp[n] = 0,这个方程是不用解的。之后能够安装普通的gauss消元从上到下消元,再回代出结果;或者更简单的,题目仅仅要求dp[1]。那么假设从下到上求,最后直接除以系数就可以
这个题目的一个麻烦点在于对矩阵的下标处理:对于原始矩阵a[i][j],放到p[n][m]的矩阵中,就变成了p[i][m - i + j],所以对原矩阵进行消元的时候须要注意这一点
再说一下这里的处理:对于p[i][j],转换过后就变成了a[i][m - i + j],也就是说。把a[i][i]变成p[i][m]。这样就方便存储了
也算是一个概率DP吧,比較关键的想法在于能将问题分解为n个状态。之后就能够用高斯消元来攻克了
高斯消元的分析时,应该注意到这个矩阵比較稀疏。且消元的时候,仅仅须要考虑最多m行的m个位置就可以,复杂度不是普通的O(n ^ 3),而是O(n * m * m)
double b[maxn];
double p[maxn][15]; int main()
{
// freopen("in.txt", "r", stdin);
while (~RII(n, m) && n)
{
FE(i, 1, n) FE(j, 1, m)
RI(c[i][j]);
FF(i, 1, n)
{
double sum = 1, s = 0;
FE(j, 1, m)
sum += c[i][j];
FE(j, 1, m)
{
if (i - j >= 1)
s += p[i][m - j] = 0.3 * c[i][j] / sum;
if (i + j <= n)
s += p[i][m + j] = 0.7 * c[i][j] / sum;
}
p[i][m] = -s;
b[i] = -1;
}
FED(i, n - 1, 1)
{
int l = max(1, i - m), r = min(n - 1, i + m);
FF(j, l, i)
{
double f = p[j][m - j + i] / p[i][m];
FE(k, l, r)
p[j][m - j + k] -= p[i][m - i + k] * f;
b[j] -= f * b[i];
}
}
printf("%.2f\n", b[1] / p[1][m]);
}
return 0;
}
2013ACM-ICPC杭州赛区全国邀请赛——Random Walk的更多相关文章
- HDU 4582 DFS spanning tree(DFS+贪心)(2013ACM-ICPC杭州赛区全国邀请赛)
Problem Description Consider a Depth-First-Search(DFS) spanning tree T of a undirected connected gra ...
- HDU 4571 Travel in time(最短路径+DP)(2013 ACM-ICPC长沙赛区全国邀请赛)
Problem Description Bob gets tired of playing games, leaves Alice, and travels to Changsha alone. Yu ...
- HDU 4573 Throw the Stones(动态三维凸包)(2013 ACM-ICPC长沙赛区全国邀请赛)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4573 Problem Description Remember our childhood? A fe ...
- 2013 ACM-ICPC长沙赛区全国邀请赛——Bottles Arrangement
这题当时竟然没看啊…… 找规律:求和m+m+m-1+m-1+……前n项 ;}
- 2013 ACM-ICPC长沙赛区全国邀请赛—Special equations
……但是没仔细看,直接跳过了 这题直接枚举就可以过了 ;}
- 2013 ACM-ICPC长沙赛区全国邀请赛——A So Easy!
这题在比赛的时候不知道怎么做,后来看了别人的解题报告,才知道公式sn=(a+sqrt(b))^n+(a-sqrt(b))^n; 具体推导 #include<iostream> #inclu ...
- Substrings 第37届ACM/ICPC 杭州赛区现场赛C题(hdu 4455)
http://acm.hdu.edu.cn/showproblem.php?pid=4455 https://icpcarchive.ecs.baylor.edu/index.php?option=c ...
- hdu 4461 第37届ACM/ICPC杭州赛区I题
题意:给两个人一些棋子,每个棋子有其对应的power,若b没有或者c没有,或者二者都没有,那么他的total power就会减1,total power最少是1,求最后谁能赢 如果b或c出现的话,fl ...
- hdu 4460 第37届ACM/ICPC杭州赛区H题 STL+bfs
题意:一些小伙伴之间有朋友关系,比如a和b是朋友,b和c是朋友,a和c不是朋友,则a和c之间存在朋友链,且大小为2,给出一些关系,求出这些关系中最大的链是多少? 求最短路的最大距离 #include& ...
随机推荐
- css3 box-sizing属性值详解
box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box. content-box,border和padding不计算入widt ...
- 谷歌翻译python接口
项目地址: https://github.com/ssut/py-googletrans 安装: sudo pip install googletrans 使用: #!/usr/bin/python ...
- js求区间随机数
function rnd(n, m){ var random = Math.round(Math.random()*(m-n)+n); return random; }
- U3D 基础
千里之行,始于足下! 最先执行的方法是:1.(激活时的初始代码)Awake2.Start3.Update(FixUpdate,LateUpdate)4.渲染模块(OnGUI)5.再向后,就是卸载模块( ...
- 转:vs无法调试解决方案
转:http://blog.csdn.net/jean7155/article/details/48223739 vs中无法加入断点进行调试的解决方案 [ 1] 以前也遇到过同样的问题,但没有问个为什 ...
- scrapy抓取拉勾网职位信息(八)——使用scrapyd对爬虫进行部署
上篇我们实现了分布式爬取,本篇来说下爬虫的部署. 分析:我们上节实现的分布式爬虫,需要把爬虫打包,上传到每个远程主机,然后解压后执行爬虫程序.这样做运行爬虫也可以,只不过如果以后爬虫有修改,需要重新修 ...
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- PlayMaker GUI的Normalized
PlayMaker GUI的Normalized 在PlayMaker的GUI设置中,开发者可以通过Left.Top设置控件元素的起始点位置,通过Width.Height设置控件的大小.考虑到用户 ...
- 【BZOJ 2440】 2440: [中山市选2011]完全平方数 (二分+容斥原理+莫比乌斯函数)
2440: [中山市选2011]完全平方数 Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数 ...
- CodeForces - 1009D Relatively Prime Graph
题面在这里! 直接暴力找点对就行了,可以证明gcd=1是比较密集的,所以复杂度略大于 O(N log N) #include<bits/stdc++.h> #define ll long ...