方程很简单,每一公里往上推就行

WA了2发,忘了单通道时的特判,还有n m傻傻分不清,忘了fixed什么的我好弱啊QAQ..

#include<bits/stdc++.h>
#define rep(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
double dp[2][30010];
vector<int> vec[1003];
int n,m,p,k,a,b;
int main(){
ios::sync_with_stdio(0);
while(cin>>m>>k>>n>>p){
memset(dp,0,sizeof dp);dp[0][p]=1;
memset(vec,0,sizeof vec);
rep(i,1,k){
cin>>a>>b;
vec[b].push_back(a);
}
rep(i,1,n) sort(vec[i].begin(),vec[i].end());
vector<int>::iterator it;
if(m>=2) rep(i,0,n-1){
memset(dp[i+1&1],0,sizeof dp[i+1&1]);
rep(j,1,m) if( ( it = find(vec[i+1].begin(),vec[i+1].end(),j) ) !=vec[i+1].end() ) dp[i+1&1][j]=-6666666;
rep(j,1,m){
if(dp[i&1][j]<=0) continue;
if(j==1){
if(dp[i+1&1][j+1]>=0) dp[i+1&1][j+1]+=1.0/2.0*dp[i&1][j];
if(dp[i+1&1][j]>=0) dp[i+1&1][j]+=1.0/2.0*dp[i&1][j];
}
else if(j==m){
if(dp[i+1&1][j-1]>=0) dp[i+1&1][j-1]+=1.0/2.0*dp[i&1][j];
if(dp[i+1&1][j]>=0) dp[i+1&1][j]+=1.0/2.0*dp[i&1][j];
}
else{
if(dp[i+1&1][j]>=0) dp[i+1&1][j]+=1.0/3.0*dp[i&1][j];
if(dp[i+1&1][j-1]>=0) dp[i+1&1][j-1]+=1.0/3.0*dp[i&1][j];
if(dp[i+1&1][j+1]>=0) dp[i+1&1][j+1]+=1.0/3.0*dp[i&1][j];
}
}
}
else{
bool flag=0;
rep(i,1,n) if((it=find(vec[i].begin(),vec[i].end(),1))!=vec[i].end()) flag=1;
if(flag==1) cout<<"0.000000"<<endl;
else cout<<"1.000000"<<endl;
continue;
}
double ans=0;
rep(j,1,m) if( ( it = find(vec[n].begin(),vec[n].end(),j) ) !=vec[n].end() ) dp[n&1][j]=-1;
rep(i,1,m) ans+=(dp[n&1][i]<=0?0:dp[n&1][i]);
cout<<fixed<<setprecision(6)<<ans<<endl;
}
return 0;
}

UESTC - 1652 递推方程的更多相关文章

  1. UESTC - 1610 递推方程+矩阵快速幂

    感觉像是HDU Keyboard的加强版,先推出3张牌时的所有组合,然后递推出n张牌 看到n=1e18时吓尿了 最后24那里还是推错了.. (5行1列 dp[1][n],dp[2][n],dp[3][ ...

  2. [原]hdu2045 不容易系列三——LELE的RPG难题 (递推方程)

    本文出自:blog.csdn.net/svitter 原题:http://acm.hdu.edu.cn/showproblem.php?pid=2045 题意:中文不用我说了吧. 这个题目的关键就在于 ...

  3. 求解线性递推方程第n项的一般方法

    概述 系数为常数,递推项系数均为一次的,形如下面形式的递推式,称为线性递推方程. \[f[n]=\begin{cases} C &n\in Value\\ a_1 f[n-1]+a_2 f[n ...

  4. hdu3483 A Very Simple Problem 非线性递推方程2 矩阵快速幂

    题目传送门 题目描述:给出n,x,mod.求s[n]. s[n]=s[n-1]+(x^n)*(n^x)%mod; 思路:这道题是hdu5950的进阶版.大家可以看这篇博客hdu5950题解. 由于n很 ...

  5. [HDOJ2604]Queuing(递推,矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 递推式是百度的,主要是练习一下如何使用矩阵快速幂优化. 递推式:f(n)=f(n-1)+f(n- ...

  6. 【高精度递推】【HDU1297】Children’s Queue

    Children's Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂)

    Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂) Description 广义的斐波那契数列是指形如\[A_n=p*a_{n-1}+q*a_{n-2}\]的数列.今给定数列的两系数p和q, ...

  8. Luogu 1962 斐波那契数列(矩阵,递推)

    Luogu 1962 斐波那契数列(矩阵,递推) Description 大家都知道,斐波那契数列是满足如下性质的一个数列: f(1) = 1 f(2) = 1 f(n) = f(n-1) + f(n ...

  9. POJ 3734 Blocks 矩阵递推

    POJ3734 比较简单的递推题目,只需要记录当前两种颜色均为偶数, 只有一种颜色为偶数 两种颜色都为奇数 三个数量即可,递推方程相信大家可以导出. 最后来个快速幂加速即可. #include< ...

随机推荐

  1. Openssl ca命令

    一.简介 ca命令能够签发证书请求文件以及生成CRL列表 二.语法 openssl ca [-verbose] [-config filename] [-name section] [-gencrl] ...

  2. asp.net web 自定义控件

    0.调用代码 protected override void Page_Load(object sender, EventArgs e) { //给基类服务接口复制,可不付 if (IsPostBac ...

  3. Dapper多表查询

    1对1 //文章 public class Post { public int ID { get; set; } public string Title { get; set; } public st ...

  4. 什么是Condition Number(条件数)?

    In the field of numerical analysis, the condition number of a function with respect to an argument m ...

  5. MySQL性能调优与架构设计——第7章 MySQL数据库锁定机制

    第7章 MySQL数据库锁定机制 前言: 为了保证数据的一致完整性,任何一个数据库都存在锁定机制.锁定机制的优劣直接应想到一个数据库系统的并发处理能力和性能,所以锁定机制的实现也就成为了各种数据库的核 ...

  6. Mac OS X 下android环境搭建

    安装jdk6.0版本以支持eclipse的安装 安装eclipse 安装jdk8.0版本,实际开发中用到的jdk 配置java环境变量 打开shell命令窗口(终端) 检测输入java -versio ...

  7. fork()的写时复制技术(转载)

    本文转载自http://www.cnblogs.com/wuchanming/p/4495479.html,为了方便以后查看... 写时复制技术最初产生于Unix系统,用于实现一种傻瓜式的进程创建:当 ...

  8. Form1调用Unit2类中函数

    Form1有一个button,当Form1.Create时触发Button的OnClick事件,OnClick事件调用Unit2单元中的函数: unit Unit2; interface uses F ...

  9. ubuntu没有权限(不能)创建文件夹(目录)

    可以在终端直接运行 sudo nautilus,弹出来的nautilus可以直接GUI操作,中途别关终端.如果遇到需要输入root密码,则输入root密码就可以启动这个图形界面了.

  10. 【转】c# delegate

    源地址:https://www.cnblogs.com/lcawen/p/6645358.html