博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UESTC - 1652 递推方程
阅读量:4647 次
发布时间:2019-06-09

本文共 1696 字,大约阅读时间需要 5 分钟。

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

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

#include
#define rep(i,j,k) for(int i=j;i<=k;i++)using namespace std;double dp[2][30010];vector
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
::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"<

转载于:https://www.cnblogs.com/caturra/p/8292113.html

你可能感兴趣的文章
Go数组和切片定义和初始化
查看>>
用javascript将数据导入Excel
查看>>
零基础入门Python3-元组tuple详解
查看>>
8、FTP,二种文本传输模式
查看>>
剑指 offer set 10 栈的压入、弹出序列
查看>>
2018美团点评内推第一道编程题-教师分组批改作业
查看>>
Android onTouch表面
查看>>
HTML中meta标签的作用与使用
查看>>
17个短视频渠道分成收益全解析
查看>>
运行及总结
查看>>
网络编程学习笔记
查看>>
AndroidManifest笔记
查看>>
进度报告(五)
查看>>
怀疑安装MySQL之后,导致OrCAD Capture、Allegro就打不开
查看>>
JAVA: List用法
查看>>
django 模型
查看>>
带智能提示的百度搜索框 —— 新:支持多种浏览器
查看>>
Windows Azure Traffic Manager (1) Windows Azure Traffic Manager - 简介
查看>>
matlab buffer的使用
查看>>
Hello World!
查看>>