这题的状态是循环依赖的有环。。

之前一道概率DP,类似有环。。但是它是可以消掉的

比如dp[i]=0.3*dp[i+1]+0.2*dp[i+2]+0.5*dp[i];

完全可以变成,0.5*dp[i]=0.3*dp[i+1]+0.2*dp[i+2]

然后把系数除过去就好了,

然而这个题是,dp[i]=0.5*dp[i+1]+0.5*dp[i-1]+1;

这个+1是什么意思呢,dp[i]->要到i+1,i-1任意两个状态之一,一定要付出1步的代价!

想一想背包问题。。类似的,

然后你会发现dp[i]还没递归完。。dp[i-1]和dp[i+1]又跑回来找它了。。。这不可能DP得出来

所以这个题正确的消环方法是,高斯消元

高斯消元我还不太会写。。待我学习一波回来写一写!

(学了高斯消元回来补辣!

我博客里的模板正常用是会TLE的!

需要剪枝!

 1 #include <iostream>
2 #include <cstdio>
3 #include <vector>
4 #include <cmath>
5 #include <cstring>
6 using namespace std;
7 const double EPS=1e-8;
8 int n,p;double A[1005][1005];
9 double x[1005];
10 int Gauss(){
11 for(int i=0;i<n;++i){
12 int pivot=i;
13 for(int j=i+1;j<n;++j)if(abs(A[j][i]>abs(A[pivot][i]))) pivot=j;
14 if(pivot!=i) for(int k=0;k<n;++k) swap(A[i][k],A[pivot][k]);
15 if(abs(A[i][i])<EPS) return 0;
16 for(int j=i+1;j<=n;++j) A[i][j]/=A[i][i];
17 for(int j=i+1;j<n;++j)
18 if(j!=i) {
19 if(abs(A[j][i])<EPS) continue;
20 for(int k=i+1;k<=n;++k) A[j][k]-=A[j][i]*A[i][k];
21 }
22 }
23 for(int i=0;i<n;++i) x[i]=A[i][n]; double ans;
24 for(int i=n-1;i>=0;--i){
25 ans=x[i];
26 for(int j=i+1;j<n;++j) ans-=A[i][j]*x[j];x[i]=ans;
27 }
28 return 1;
29 }
30 int main(){
31 int T;scanf("%d",&T);
32 while(T--){
33 scanf("%d%d",&n,&p);
34 //构造系数矩阵
35 memset(A,0,sizeof(A));
36 for(int i=0;i<n;++i){
37 if(i==p) {
38 A[i][i]=1;A[i][n]=0;
39 continue;
40 }
41 A[i][i]=1;A[i][(i-1+n)%n]=-0.5;
42 A[i][(i+1)%n]=-0.5;A[i][n]=1;
43 }
44 Gauss();
45 printf("%.4f\n",x[0]);
46 }
47 return 0;
48 }

14行和19行是剪枝的地方,不减的话这题最高1000^3还是会T的

sdut2878 环形依赖的DP(高斯消元,剪枝后的模板的更多相关文章

  1. BZOJ 3270: 博物馆 [概率DP 高斯消元]

    http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...

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

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

  3. BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元

    BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...

  4. LightOJ - 1151概率dp+高斯消元

    概率dp+高斯消元 https://vjudge.net/problem/LightOJ-1151 题意:刚开始在1,要走到100,每次走的距离1-6,超过100重来,有一些点可能有传送点,可以传送到 ...

  5. 【BZOJ3640】JC的小苹果 概率DP+高斯消元

    [BZOJ3640]JC的小苹果 Description 让我们继续JC和DZY的故事. “你是我的小丫小苹果,怎么爱你都不嫌多!” “点亮我生命的火,火火火火火!” 话说JC历经艰辛来到了城市B,但 ...

  6. 【bzoj1778】[Usaco2010 Hol]Dotp 驱逐猪猡 矩阵乘法+概率dp+高斯消元

    题目描述 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44,850)条由两 ...

  7. BZOJ3270 博物館 概率DP 高斯消元

    BZOJ3270 博物館 概率DP 高斯消元 @(XSY)[概率DP, 高斯消元] Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博 ...

  8. 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径

    2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 682  Solved: 384[Submit][Stat ...

  9. 2014多校第一场J题 || HDU 4870 Rating(DP || 高斯消元)

    题目链接 题意 :小女孩注册了两个比赛的帐号,初始分值都为0,每做一次比赛如果排名在前两百名,rating涨50,否则降100,告诉你她每次比赛在前两百名的概率p,如果她每次做题都用两个账号中分数低的 ...

随机推荐

  1. Redis 实战 —— 04. Redis 数据结构常用命令简介

    字符串 P39 Redis 的字符串是一个有字节组成的序列,可以存储以下 3 种类型的值:字节串(byte string).整数.浮点数. 在需要的时候, Redis 会将整数转换成浮点数.整数的取值 ...

  2. PW6513高压40V的LDO芯片,SOT89封装

    一般说明 PW6513系列是一款高精度,高输入电压,低静态电流,高速,低具有高纹波抑制的线性稳压器.输入电压高达40V,负载电流为在电压=5V和VIN=7V时高达300mA.该设备采用BCD工艺制造. ...

  3. 使用git同步代码

    方法1.先把远程仓库clone到本地,本地修改后再push到gitee的远程仓库 1. 配置本地的git配置信息 git config -l #查看git本地配置信息 # 如果没有配置,需要配置自己的 ...

  4. CoeMonkey少儿编程第4章 变量

    点击这里,现在就开启CodeMonkey的趣味编程之旅. 目标 了解什么是变量 了解变量的命名规则 掌握如何使用变量 变量 什么是变量?顾名思义,变量就是可以变化的量. 和变量相对的是常量,即不可变化 ...

  5. /bin/sh: cc: command not found

    make的时候报错:/bin/sh: cc: command not found 解决: 1. sudo yum -y install gcc gcc-c++ libstdc++-devel 2. m ...

  6. https://design-patterns.readthedocs.io/zh_CN/latest/index.html

    图说设计模式 - Graphic Design Patterns https://design-patterns.readthedocs.io/zh_CN/latest/index.html

  7. error out of table range

    .

  8. C++ Primer Plus读书笔记(一)开始学习C++

    1.using namespace std; 注意一下命名空间的概念,不编译这句话,可能就要用  std::cout << std::endl 这种写作方式了. 这句话放在函数内部,只对该 ...

  9. UML——宏观总结

    今天果断开始UML的学习,要不就要被12期赶超了.努力学习的效率 一.宏观导图把控 导图概要说明:RUP这块儿的内容相当于软件工程已经学过了,只不过这里换了个名词而已.面向对象,已经不再陌生,vb中早 ...

  10. Pytest(17)运行未提交的git(pytest-picked)

    前言 我们每天写完自动化用例后都会提交到 git 仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交 git 仓库的用例.pytest-picked 插件可以 ...