题目

/*********************复制来的大致题意**********************

有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)的更多相关文章

  1. hdu 4576(简单概率dp | 矩阵优化)

    艰难的一道题,体现出菜菜的我... 首先,先吐槽下. 这题到底出题人是怎么想的,用普通概率dp水过??? 那为什么我概率dp写的稍微烂点就一直tle?  感觉很不公平.大家算法都一致,因为我程序没有那 ...

  2. HDU 4576 Robot (很水的概率题)

    Robot Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others)Total Sub ...

  3. hdu 4576 (简单dp+滚动数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576 题意:给出1~n的环,m个操作,每次能顺时针或逆时针走w步,询问最后在l~r这段区间内概率.(1 ...

  4. HDU 3853LOOPS(简单概率DP)

    HDU 3853    LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...

  5. HDU - 1099 - Lottery - 概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...

  6. HDU 4405 【概率dp】

    题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...

  7. HDU 4599 Dice (概率DP+数学+快速幂)

    题意:给定三个表达式,问你求出最小的m1,m2,满足G(m1) >= F(n), G(m2) >= G(n). 析:这个题是一个概率DP,但是并没有那么简单,运算过程很麻烦. 先分析F(n ...

  8. [HDU 4089]Activation[概率DP]

    题意: 有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有以下情况: 1.激活失败,留在队列中等待下一次激活(概率为p1) 2.失去连接,出队列,然后排在队列的最后( ...

  9. hdu 3853 LOOPS 概率DP

    简单的概率DP入门题 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include ...

随机推荐

  1. gem

    bundle gem xxxrake build gem push pkg/xxx.gem rake releaserake install

  2. 成功完成Moses Manual中BaseLineSystem

    终于把这个破法语句子翻译出来了,各种耗时,bug,弄了一天,明天争取看完详细的翻译教程! 而且还要学习中文分词,晚安,Moses!

  3. wpf做的可扩展记事本

    记得有个winform利用反射做的可扩展笔记本,闲来无事,便用wpf也搞了个可扩展记事本,可用接口动态扩展功能,较简单,以便参考: 目录结构如下: MainWindow.xaml为主功能界面,Func ...

  4. EMVTag系列9《卡片管理数据》

    Ø  5F30    服务码 F: n 3 T: 5F30 L: 2 -O(可选):可选数据元 按GB/T 17552标准,卡片中的服务码(5F30) 的值,要和二磁道等效数据57中的服务码的值完全一 ...

  5. Python常用内建模块

    Python常用内建模块 datetime 处理日期和时间的标准库. 注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import da ...

  6. Android--获取使用的总流量和每个App的上传、下载的流量

    获得每个App的上传.下载的流量. 思路就是获取到我们手机上的所有app,再获得app里面使用的权限,如果app有网络权限,就显示出来. 代码很简单,代码里面也有比较详细的注释,下面直接上代码 布局文 ...

  7. linux安装ruby

    可以使用 sudo apt-get install ruby 的方式安装,但一般这种方式安装的版本比较旧.另外也可以用以下方式安装新的版本. 1. 首先更新软件源,使用国内的.参考:http://wi ...

  8. epoll重要

    EPOLL事件分发系统可以运转在两种模式下:Edge Triggered (ET).Level Triggered (LT). LT是缺省的工作方式,并且同时支持block和no-blocksocke ...

  9. 浅析Objective-C字面量

    编写Objective-C程序时,总会用到某几个类,它们属于Foundation框架.虽然从技术上来说,不用Foundation框架也能写出Objective-C代码,但实际上却经常要用到此框架.这几 ...

  10. 使用C语言在Win控制台中输出带颜色的文字

    学了这么久的C语言,一直停留在编写“控制台”程序的水平.黑色窗口,白色的文字,看多了着实让人感到枯燥无味.但是作为业余爱好者,我既没有那么多时间和精力去学习如何编写窗口程序,也没有那个必要一定用C去调 ...