题目

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

有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. char const*, char*const, const char *const的区别

    C++标准规定,const关键字放在类型或变量名之前等价的.所以,const char*和 char const*是一样的. const char*   //常量指针---指向常量的指针----指针指 ...

  2. button与submit

    原文来自: http://blog.sina.com.cn/s/blog_693d183d0100uolj.html submit是button的一个特例,也是button的一种,它把提交这个动作自动 ...

  3. RMAN 报:ORA-19504 ORA-27038

    在itpub中看到下面的问题: oracle 10g备份脚本如下run{allocate channel d1 device type disk MAXPIECESIZE=100M;crosschec ...

  4. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统 :1.技术简介之Mina连接

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 Apache MINA(Multipurpose Infrastructure for Network Applic ...

  5. 35.在PCB中删除元件

    在PCB Editor里面,如果想进行什么操作,首先得点击这个命令,再点击你要操作的区域/元件,最后右键选择"Done",这样你才能完成一个操作.

  6. SQLiteAPI函数详解

    使用的过程根据使用的函数大致分为如下几个过程: sqlite3_open() sqlite3_prepare() sqlite3_step() sqlite3_column() sqlite3_fin ...

  7. 使用xilinx ip core FIFO First- World First-Through (FWFT)模式的注意事项

    也许很多人知道xilinx ip core 中的fifo可以配成standard 模式和FWFT模式,并知道两者的区别是:standard模式下,当rd为高时,fifo会延时一个时钟输出数据(时序逻辑 ...

  8. SDOI2016 round1滚粗记

    Day -1 刚刚从HN集训回来,感觉整个人萌萌哒.考前不断立flag——这次我一定会滚粗的,然后设想着滚粗之后文化课先补什么,浑浑噩噩的过了一天,晚上看到CA爷(娘)发了关于cena爆栈的问题,这时 ...

  9. 微软职位内部推荐-SDEII for Windows Phone Apps

    微软近期Open的职位: Job title: Software Design Engineer II Location: China, Beijing Division: Operations Sy ...

  10. NABC的特点分析

    题目:                         请把采用卡片分类的方法讨论你们的团队开发项目特点,再按照 NABC 的框架分析每个特点. 每一个组员针对其中的一个特点将NABC的分析结果发表博 ...