HDU 4576 Robot(概率dp)
/*********************复制来的大致题意**********************
有N个数字,M个操作, 区间L, R。 然后问经过M个操作后落在[L, R]的概率。
*******************************************************/
//自己做,错掉了,然后参考了别人的解法,说是要 概率dp
//概率模拟题,一定要用概率来模拟,
//因为数据很大,可能超了__int64,
//模拟方式用dp[2][], 0表示前一个状态,1表示现在的状态,
//WA掉的解法:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; int main()
{
int n,m,l,r,w,i,j;
__int64 a[],a1[];
int temp1,temp2,temp;
__int64 fenzi,fenmu; while(scanf("%d%d%d%d",&n,&m,&l,&r)!=EOF)
{
if(n==&&m==&&l==&&r==)break;
memset(a,,sizeof(a));
memset(a1,,sizeof(a1));
a[]=;
a1[]=; for(i=;i<m;i++)
{
scanf("%d",&w);
w=w%n;
for(j=;j<=n;j++)
{
if(a[j]!=)
{
temp=a[j];
temp1=j+w;
while(temp1>n)temp1=temp1-n;
temp2=j-w;
while(temp2<)temp2=temp2+n;
a1[temp1]+=a[j];
a1[temp2]+=a[j];
a1[j]=a1[j]-temp;
}
}
for(j=;j<=n;j++)
{
a[j]=a1[j];
}
} fenzi=;
fenmu=;
for(j=;j<=n;j++)
{
fenmu=fenmu+a[j];
}
for(j=l;j<=r;j++)
{
fenzi=fenzi+a[j];
} printf("%.4lf\n",(fenzi*1.0)/(fenmu*1.0)); }
return ;
}
//我猜测搓掉的原因是数据太大,导致越界,然后结果就不准了,因为m很大哦~
//可以AC的解法:
//听说这种解法叫做简单的概率dp
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int n,m,l,r,w,i,j;
int temp1,temp2,temp;
double dp[][]; //0 1 表示前后两次,210 表示点 dp 概率 while(scanf("%d%d%d%d",&n,&m,&l,&r)!=EOF)
{
if(n==&&m==&&l==&&r==)break;
memset(dp,,sizeof(dp));
dp[][]=;
temp = ; //状态 0 1
for(i=;i<=m;i++)
{
scanf("%d",&w);
for(j=;j<=n;j++)
{
temp1=j+w;
while(temp1>n)temp1=temp1-n;
temp2=j-w;
while(temp2<)temp2=temp2+n;
dp[(temp+)%][temp1]+=dp[temp][j]*0.5;
dp[(temp+)%][temp2]+=dp[temp][j]*0.5;
dp[temp][j]=;
}
temp=(temp+)%;
}
double ans = 0.0;
for(i=l;i<=r;i++)
{
ans+=dp[temp][i];
}
printf("%.4lf\n",ans);
}
return ;
}
HDU 4576 Robot(概率dp)的更多相关文章
- hdu 4576(简单概率dp | 矩阵优化)
艰难的一道题,体现出菜菜的我... 首先,先吐槽下. 这题到底出题人是怎么想的,用普通概率dp水过??? 那为什么我概率dp写的稍微烂点就一直tle? 感觉很不公平.大家算法都一致,因为我程序没有那 ...
- HDU 4576 Robot (很水的概率题)
Robot Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)Total Sub ...
- hdu 4576 (简单dp+滚动数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576 题意:给出1~n的环,m个操作,每次能顺时针或逆时针走w步,询问最后在l~r这段区间内概率.(1 ...
- HDU 3853LOOPS(简单概率DP)
HDU 3853 LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...
- HDU - 1099 - Lottery - 概率dp
http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...
- HDU 4405 【概率dp】
题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...
- HDU 4599 Dice (概率DP+数学+快速幂)
题意:给定三个表达式,问你求出最小的m1,m2,满足G(m1) >= F(n), G(m2) >= G(n). 析:这个题是一个概率DP,但是并没有那么简单,运算过程很麻烦. 先分析F(n ...
- [HDU 4089]Activation[概率DP]
题意: 有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有以下情况: 1.激活失败,留在队列中等待下一次激活(概率为p1) 2.失去连接,出队列,然后排在队列的最后( ...
- hdu 3853 LOOPS 概率DP
简单的概率DP入门题 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include ...
随机推荐
- Python科学计算利器——Anaconda
(搬运自我在SegmentFault的博客) 最近在用Python做中文自然语言处理.使用的IDE是PyCharm.PyCharm确实是Python开发之首选,但用于科学计算方面,还略有欠缺.为此我尝 ...
- [转]Oracle_ProC编程
1.引言 由于PL/SQL不能用来开发面向普通用户的应用程序,必须借助其他语言或开发工具. 在Linux操作系统下应该用什么语言或开发工具来进行Oracle数据库应用的开发呢?本文将介绍2种方案:Pr ...
- hdu 4609 3-idiots <FFT>
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4609 题意: 给定 N 个正整数, 表示 N 条线段的长度, 问任取 3 条, 可以构成三角形的概率为多 ...
- hdu 2091 空心三角形
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2091 空心三角形 Description 把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为 ...
- minihttp http://www.acme.com/software/mini_httpd/
1.安装mini_httpd 1.1把下载的mini_httpd-1.19.tar.gz拷贝到根目录 1.2 解压tar -xvfzmini_httpd-1.19.tar.gz ,会在根目录产生一 ...
- SharePoint 2010 设置宽度1024px
在模板页中找到 s4-workspace,设置class=”s4-nosetwidth“,然后再设置宽度为1024px:如果要居中,设置style=“margin:0 auto” 这样也会有一个问题: ...
- iOS 进阶 第二十天(0520)
0520 -KVO 如下图所示:(面试可能会问到,你就按照下面的说) 注意:NSString类型的成员变量用set方法时,要记得用copy,至于为什么,知道这么用就行了.如下图:
- html readme
取html页面高度 document.documentElement.scrollHeight在IE和Chrome下,可以正常取到合适的全文高度,但是firefox下取到的则过高: 用document ...
- 基于.net mvc的校友录(七、文件上传以及多对多关系表的LINQ查询实现)
图片的上传与调用 图片的上传就是文件的上传,在前台使用的是type="file"的input,但是,要将表单声明为multipart/form-data模式,方法是在BeginFo ...
- Android -- 程序判断手机ROOT状态,获取ROOT权限
判断手机是否具有ROOT权限 /** * 判断手机是否ROOT */ public ...