题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576

题意:给出1~n的环,m个操作,每次能顺时针或逆时针走w步,询问最后在l~r这段区间内概率。
(1<=n<=200) ,(0<=m<=1,000,000),(1<=l<=r<=n).
分析:每次从某一个数字到达另外数字的概率为0.5,按概率dp求出到达每个数字的概率,然后枚举从l到r的概率相加即可。
dp[i][j]表示第i次操作落在数字j上的概率,但是不能直接开1000000*200的数组来保存中间结果,这肯定是会爆掉的。
因为每次只需要取上一次的数据,所以可以用滚动数组,开dp[2][200]就行了
注意:w可能比n大,所以要先w%n
这一题卡时限卡的非常紧,代码稍微写挫一点就会超时了。
代码如下:

 #include<stdio.h>
#include<string.h>
double dp[][];
int main()
{
int n,m,l,r,i,t,k,w;
while(scanf("%d%d%d%d",&n,&m,&l,&r)!=EOF)
{
if(n==&&m==&&l==&&r==)
break;
memset(dp,,sizeof(dp));
dp[][]=;
t=;
while(m--)
{
scanf("%d",&w);
w%=n;
k=t^;
for(i=;i<n;i++)
dp[k][i]=;
for(i=;i<n;i++)
{
if(!dp[t][i]) //时限卡的很紧,加这一句来优化,减少运算次数
continue;
dp[k][(i+w)%n]+=0.5*dp[t][i];
dp[k][(i-w+n)%n]+=0.5*dp[t][i];
}
t=k;
}
double ans=;
for(i=l;i<=r;i++)
ans+=dp[t][i-];
printf("%.4lf\n",ans);
}
return ;
}

hdu 4576 (简单dp+滚动数组)的更多相关文章

  1. hdu 4576(概率dp+滚动数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576 思路:由于每次从某一位置到达另一位置的概率为0.5,因此我们用dp[i][j]表示第i次操作落在 ...

  2. HDU 4576 简单概率 + 滚动数组DP(大坑)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576 坑大发了,居然加 % 也会超时: #include <cstdio> #includ ...

  3. HDU - 6578 Blank DP + 滚动数组

    HDU - 6578 Blank 题意 给你\(\{0,1,2, 3\}\)四个数,分别填入长度为\(n\)的数列中,有\(m\)个限制条件,\(l_{i}, r_{i}, x_{i}\)表示在\([ ...

  4. bzoj 1270: [BeijingWc2008]雷涛的小猫 简单dp+滚动数组

    1270: [BeijingWc2008]雷涛的小猫 Time Limit: 50 Sec  Memory Limit: 162 MB[Submit][Status][Discuss] Descrip ...

  5. HDU 1024 Max Sum Plus Plus --- dp+滚动数组

    HDU 1024 题目大意:给定m和n以及n个数,求n个数的m个连续子系列的最大值,要求子序列不想交. 解题思路:<1>动态规划,定义状态dp[i][j]表示序列前j个数的i段子序列的值, ...

  6. HDU 5119 Happy Matt Friends (背包DP + 滚动数组)

    题目链接:HDU 5119 Problem Description Matt has N friends. They are playing a game together. Each of Matt ...

  7. POJ 3666 Making the Grade (DP滚动数组)

    题意:农夫约翰想修一条尽量平缓的路,路的每一段海拔是A[i],修理后是B[i],花费|A[i] – B[i]|,求最小花费.(数据有问题,代码只是单调递增的情况) #include <stdio ...

  8. USACO 2009 Open Grazing2 /// DP+滚动数组oj26223

    题目大意: 输入n,s:n头牛 s个栅栏 输入n头牛的初始位置 改变他们的位置,满足 1.第一头与最后一头的距离尽量大 2.相邻两头牛之间的距离尽量满足 d=(s-1)/(n-1),偏差不超过1 3. ...

  9. HDU - 4576 Robot(概率dp+滚动数组)

    题意:所有的格子围成一个圈,标号为1~n,若从格子1出发,每次指令告知行走的步数,但可能逆时针也可能顺时针走,概率都是1/2,那么问走了m次指令后位于格子l~r(1≤l≤r≤n)的概率. 分析: 1. ...

随机推荐

  1. [SCOI2010]传送带 三分法

    [SCOI2010]传送带 LG传送门 三分法模板. 关于为什么可以三分,我选择感性理解,有人证明了,总之我是懒得证了. 假设路径是\(A \to E \to F \to D\),\(E\)和\(F\ ...

  2. jsp jstl 值空格拼接导致的异常

    红线标记处多了个空格,所以出现值错误

  3. How to get PrivateKey, PublicKey, Cert ID:

    0. Prepare cert.pfx and its password, verify_sign_acp.cer 1. Get Private Key $ openssl pkcs12 -in ce ...

  4. Python+Selenium UI自动化测试环境搭建及使用

    一什么是Selenium ? Selenium 是一个浏览器自动化测试框架,它主要用于web应用程序的自动化测试,其主要特点如下:开源.免费:多平台.浏览器.多语言支持:对web页面有良好的支持:AP ...

  5. Centos6.8配置JDK

    下载jdk-版本号.tar.gz 解压到/usr/local/ vi /etc/profile 最后一行添加如下内容: export JAVA_HOME=/usr/local/jdk-版本号expor ...

  6. 开始认真的学习Python

    虽然以前有多年的Fortran.C.C++以及Java开发经验,但真的开始熟悉Python还是被惊艳到了,太舒服了,看起来有如沐春风的感觉,简洁和优美,这个才是代码艺术.

  7. AssetBundle压缩/内部结构/下载和加载

    一.AssetBundle的压缩方式   Unity支持三种AssetBundle打包的压缩方式:LZMA, LZ4, 以及不压缩.    1.LZMA压缩方式  是一种默认的压缩形式,这种标准压缩格 ...

  8. linux常用命令总结(含选项参数)

    • 用户切换 su              切换到root用户并不切换环境 su - root   切换到root用户并切换环境 su  redhat  切换到redhat不切换环境 • cd切换目 ...

  9. vue 组件-父组件传值给子组件

    父组件通过属性,传值给子组件,子组件通过,props数组里的名称来接受父组件传过来的值. HTML部分: <div id="app"> <tmp1 :parent ...

  10. SQL Server复制

    SQL Server复制的阶梯:级别1-SQL Server复制介绍 By Sebastian Meine, 2012/12/26 原文链接:http://www.sqlservercentral.c ...