题目链接http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2878.html

题意

n个结点编号为0到n-1组成一个环。如果当前在结点x,那么它等概率的走向 (x+1)mod n,(x-1) 问从0到x的期望步数是多少

分析

高斯消元解决带环概率DP

f[i]表示当前在i结点,走到x结点得期望步数。f[x]=0。

f[i]=f[i+1]*0.5+f[i-1]*0.5+1

整理得到 1=f[i+1]*0.5+f[i-1]*0.5-f[i] 所以得到了n个方程组有n个未知量,然后通过高斯消元求解。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <iostream>
  5. #include <cmath>
  6.  
  7. using namespace std;
  8. const int maxn=+;
  9. double f[maxn],a[maxn][maxn];
  10. int T,n,x;
  11. void Gauss(){
  12. int k,col;
  13. for(k=,col=;k<n&&col<n;k++,col++){
  14. int max_k=k;
  15. for(int i=k;i<n;i++){
  16. if(fabs(a[i][col])>fabs(a[max_k][col]))max_k=i;
  17. }
  18. if(max_k!=k){
  19. for(int i=;i<=n;i++)
  20. swap(a[k][i],a[max_k][i]);
  21. }
  22. if(a[k][col]==){
  23. k--;
  24. continue;
  25. }
  26. for(int i=k+;i<n;i++){
  27. if(a[i][col]){
  28. double g=a[i][col]/a[k][col];
  29. for(int j=;j<=n;j++){
  30. a[i][j]-=a[k][j]*g;
  31. }
  32. }
  33. }
  34. }
  35. for(int i=n-;i>=;i--){
  36. double g=a[i][n];
  37. for(int j=i+;j<n;j++){
  38. if(a[i][j]!=){
  39. g-=a[i][j]*f[j];
  40. }
  41. }
  42. f[i]=g/a[i][i];
  43. }
  44. return ;
  45. }
  46. int main(){
  47. scanf("%d",&T);
  48. for(int t=;t<=T;t++){
  49. memset(a,,sizeof(a));
  50. scanf("%d%d",&n,&x);
  51. for(int i=;i<n;i++){
  52. if(i==){
  53. a[i][i]=1.0;
  54. a[i][n]=;
  55. }else{
  56. a[i][i]=1.0;
  57. a[i][(i+)%n]=-0.5;
  58. a[i][i-]=-0.5;
  59. a[i][n]=;
  60. }
  61. }
  62. Gauss();
  63. printf("%.4f\n",f[x]);
  64. }
  65. return ;
  66. }

【sdut2878】Circle的更多相关文章

  1. 【CF744D】Hongcow Draws a Circle 二分+几何

    [CF744D]Hongcow Draws a Circle 题意:给你平面上n个红点和m个蓝点,求一个最大的圆,满足圆内不存在蓝点,且至少包含一个红点. $n,m\le 10^3$ 题解:我们先不考 ...

  2. 【LG4631】[APIO2018]Circle selection 选圆圈

    [LG4631][APIO2018]Circle selection 选圆圈 题面 洛谷 题解 用\(kdt\)乱搞剪枝. 维护每个圆在\(x.y\)轴的坐标范围 相当于维护一个矩形的坐标范围为\([ ...

  3. 657. Judge Route Circle【easy】

    657. Judge Route Circle[easy] Initially, there is a Robot at position (0, 0). Given a sequence of it ...

  4. 【LeetCode】657. Judge Route Circle 解题报告

    [LeetCode]657. Judge Route Circle 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/judge-route- ...

  5. 【POJ 1981】Circle and Points(已知圆上两点求圆心坐标)

    [题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...

  6. 【CS Round #39 (Div. 2 only) B】Circle Elimination

    [Link]:https://csacademy.com/contest/round-39/task/circle-elimination/ [Description] [Solution] 把n个点 ...

  7. 转:【译】CSS3:clip-path详解

    我的一个学生,Heather Banks,想要实现他在Squarespace看到的一个效果: 根据她的以往经验,这个网站的HTML和CSS是完全在她的能力范围以内,于是我帮助她完成了这个效果.显示na ...

  8. 适合于图像处理方向的SCI期刊杂志列表【转】

    适合于图像处理方向的SCI期刊杂志列表[转]   表1. 适合于图像处理方向的SCI期刊杂志列表 ISSN 期刊名 出版周期 1057-7149 IEEE TRANSACTIONS ON IMAGE ...

  9. 【OOAD】OOP的主要特征

    聚合 “虚包含” 不明确组合 “实包含” 明确 抽象(abstract)抽象:抽象是通过特定的实例抽取共同特征以后形成概念的过程.它强调主要特征,忽略次要特征.一个对象是现实世界中一个实体的抽象,一个 ...

随机推荐

  1. Cache应用中的服务过载案例研究

    https://tech.meituan.com/avalanche-study.html

  2. socket编程 —— 非阻塞socket (转)---例子已上传至文件中

    在上一篇文章 <socket编程——一个简单的例子> http://blog.csdn.net/wind19/archive/2011/01/21/6156339.aspx 中写了一个简单 ...

  3. Errors running builder 'DeploymentBuilder' on project ' 解决方法

    此问题一般发生在Myeclipse 保存文件并自动部署时候. Errors occurred during the build. Errors running builder 'DeploymentB ...

  4. CentOS6.5安装中文支持

    本人在安装CentOS6.5时选择是英文版,安装后打开文档,发现好些文档成了乱码了. 这个问题的原因是没有中文支持. 解决方法: 1.安装中文支持包 # yum groupinstall " ...

  5. Python WebServer with MSSql

    今天尝试了一下在windows上用python来写web服务 我的环境是 win7(64位)+ python(2.7.11) 第一步需要安装pymssql 第二步需要安装tornado(web服务靠他 ...

  6. javascript系列学习----Creating objects

    在javascript语言里面,一切皆是对象,对象是它的灵魂,值得我们学习和领悟对象的概念和使用,下面我会引用实例来进行说明. 1)创建对象 方法一:js的对象方法构造 var cody = new ...

  7. 语义分割【semantic-segmentation】资料备忘

    https://github.com/mrgloom/awesome-semantic-segmentation

  8. CArray,CList,CMap如何实例化

    1.定义一个CMap,向这个CMap中增加数据项(键-值对).CMap<CString, LPCTSTR, CString, LPCTSTR>m_ItemMap;CString strKe ...

  9. CAsyncSocket只传输了一部分数据(UDP),后面是乱码

    void CCAsyncSocketDlg::OnBnClickedBtnSend() { UpdateData(TRUE); TCHAR ipstr[INET_ADDRSTRLEN]; DWORD ...

  10. TCP/IP网络编程系列之三(初级)

    TCP/IP网络编程系列之三-地址族与数据序列 分配给套接字的IP地址和端口 IP是Internet Protocol (网络协议)的简写,是为首发网络数据而分配给计算机的值.端口号并非赋予计算机值, ...