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

坑大发了,居然加 % 也会超时;

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <sstream>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <cstdlib>
  7. #include <string>
  8. #include <vector>
  9. #include <map>
  10. #include <set>
  11. #include <queue>
  12. #include <stack>
  13. #include <algorithm>
  14. using namespace std;
  15. #define ll long long
  16. #define _cle(m, a) memset(m, a, sizeof(m))
  17. #define repu(i, a, b) for(int i = a; i < b; i++)
  18. #define repd(i, a, b) for(int i = b; i >= a; i--)
  19. #define sfi(n) scanf("%d", &n)
  20. #define sfl(n) scanf("%I64d", &n)
  21. #define pfi(n) printf("%d\n", n)
  22. #define pfl(n) printf("%I64d\n", n)
  23. #define MAXN 1000005
  24. int n, l, m, r, d;
  25. int t = , mm;
  26. double dp[][];
  27. int main()
  28. {
  29. while(~scanf("%d%d%d%d", &n, &m, &l, &r) && (n + m + l + r))
  30. {
  31. t = ;
  32. repu(i, , n + ) dp[][i] = 0.0;
  33. dp[][] = 1.0;
  34. int c;
  35. repu(i, , m)
  36. {
  37. sfi(d);
  38. if(l == && r == n) continue;
  39. c = d / n;
  40. mm = d - n * c;
  41. if(mm)
  42. {
  43. t = !t;
  44. repu(j, , n + )
  45. {
  46. int lt, rt;
  47. if((n + (j - mm)) >= n) lt = (n + (j - mm)) - n;
  48. else lt = (n + (j - mm));
  49. if((j + mm) >= n) rt = (j + mm) - n;
  50. else rt = (j + mm);
  51. if(lt == ) lt = n;
  52. if(rt == ) rt = n;
  53. dp[t][j] = (dp[!t][lt] + dp[!t][rt]) / 2.0;
  54. //cout<<j<<" :"<<dp[t][j]<<endl;
  55. }
  56. }
  57. }
  58. double ans = 0.0;
  59. if(l == && r == n) ans = 1.0;
  60. else
  61. repu(i, l, r + ) ans += dp[t][i];
  62. printf("%.4lf\n", ans);
  63. }
  64. return ;
  65. }

AC

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <sstream>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <cstdlib>
  7. #include <string>
  8. #include <vector>
  9. #include <map>
  10. #include <set>
  11. #include <queue>
  12. #include <stack>
  13. #include <algorithm>
  14. using namespace std;
  15. #define ll long long
  16. #define _cle(m, a) memset(m, a, sizeof(m))
  17. #define repu(i, a, b) for(int i = a; i < b; i++)
  18. #define repd(i, a, b) for(int i = b; i >= a; i--)
  19. #define sfi(n) scanf("%d", &n)
  20. #define sfl(n) scanf("%I64d", &n)
  21. #define pfi(n) printf("%d\n", n)
  22. #define pfl(n) printf("%I64d\n", n)
  23. #define MAXN 1000005
  24. int n, l, m, r, d;
  25. int t = , mm;
  26. double dp[][];
  27. int main()
  28. {
  29. while(~scanf("%d%d%d%d", &n, &m, &l, &r) && (n + m + l + r))
  30. {
  31. t = ;
  32. repu(i, , n + ) dp[][i] = 0.0;
  33. dp[][] = 1.0;
  34. int c;
  35. repu(i, , m)
  36. {
  37. sfi(d);
  38. if(l == && r == n) continue;
  39. c = d / n;
  40. mm = d - n * c;
  41. if(mm)
  42. {
  43. t = !t;
  44. repu(j, , n + )
  45. {
  46. int lt, rt;
  47. lt = (n + (j - mm)) % n;
  48. rt = (j + mm) % n;
  49. // if((n + (j - mm)) >= n) lt = (n + (j - mm)) - n;
  50. // else lt = (n + (j - mm));
  51. // if((j + mm) >= n) rt = (j + mm) - n;
  52. // else rt = (j + mm);
  53. if(lt == ) lt = n;
  54. if(rt == ) rt = n;
  55. dp[t][j] = (dp[!t][lt] + dp[!t][rt]) / 2.0;
  56. //cout<<j<<" :"<<dp[t][j]<<endl;
  57. }
  58. }
  59. }
  60. double ans = 0.0;
  61. if(l == && r == n) ans = 1.0;
  62. else
  63. repu(i, l, r + ) ans += dp[t][i];
  64. printf("%.4lf\n", ans);
  65. }
  66. return ;
  67. }

TLE

% 慎用啊必须,虽然不知道为什么

HDU 4576 简单概率 + 滚动数组DP(大坑)的更多相关文章

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

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

  2. Palindrome_滚动数组&&DP

    Description A palindrome is a symmetrical string, that is, a string read identically from left to ri ...

  3. poj - 1159 - Palindrome(滚动数组dp)

    题意:一个长为N的字符串( 3 <= N <= 5000).问最少插入多少个字符使其变成回文串. 题目链接:http://poj.org/problem?id=1159 -->> ...

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

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

  5. HDU 4576 Robot(概率dp)

    题目 /*********************复制来的大致题意********************** 有N个数字,M个操作, 区间L, R. 然后问经过M个操作后落在[L, R]的概率. * ...

  6. Making the Grade_滚动数组&&dp

    Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...

  7. Gym 100507G The Debut Album (滚动数组dp)

    The Debut Album 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/G Description Pop-group & ...

  8. 【滚动数组】 dp poj 1036

    题意:一群匪徒要进入一个酒店.酒店的门有k+1个状态,每个匪徒的参数是:进入时间,符合的状态,携带的钱. 酒店的门刚开始状态0,问最多这个酒店能得到的钱数. 思路: dp数组为DP[T][K]. 转移 ...

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

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

随机推荐

  1. HTML5的数据自动补齐功能

    使用datalist元素,HTML5允许使用一组数据来生成自动补齐功能,现在你不需要使用第三方js代码或者类库啦! <input name="frameworks" list ...

  2. Uva 10917

    题目链接:http://vjudge.net/contest/143062#problem/A 题意:一个人要从点1去到点2,中间还有很多点和很多条边.问你如果他每次走的边(a,b)都满足:a点到目标 ...

  3. Visual Studio的Web Performance Test提取规则详解(3)

    总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...

  4. Linux下环境变量设置

    分类 Linux下的环境变量按生存周期来划分,可以划分为两种: 1)永久的:需要修改配置文件, 变量永久生效 2)临时的:直接在终端使用export命令声明即可,但是关闭shell后失效. 设置方法 ...

  5. centos7 禁止防火墙

    #CentOS .0默认使用的是firewall作为防火墙,这里改为iptables防火墙. #firewall: systemctl start firewalld.service#启动firewa ...

  6. Deep Learning 6_深度学习UFLDL教程:Softmax Regression_Exercise(斯坦福大学深度学习教程)

    前言 练习内容:Exercise:Softmax Regression.完成MNIST手写数字数据库中手写数字的识别,即:用6万个已标注数据(即:6万张28*28的图像块(patches)),作训练数 ...

  7. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  8. 分方式缓存常用的一致性hash是什么原理

    分方式缓存常用的一致性hash是什么原理 一致性hash是用来解决什么问题的?先看一个场景有n个cache服务器,一个对象object映射到哪个cache上呢?可以采用通用方法计算object的has ...

  9. .AndroidRuntimeException: requestFeature() must be called before adding content

    有以下几种情况: 1. setContentView(R.layout.activity_list); requestWindowFeature(Window.FEATURE_NO_TITLE); 修 ...

  10. 使用QTP测试Web对象

    加载Web插件先启动QTP,再启动浏览器,否则Web元素识别不了最新版本QTP11支持的浏览器:IE:6.7.8Firefox:3.0.x.3.5.QTP支持直接访问DOM(Document Obje ...