HDU 4576 简单概率 + 滚动数组DP(大坑)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576
坑大发了,居然加 % 也会超时;
- #include <cstdio>
- #include <iostream>
- #include <sstream>
- #include <cmath>
- #include <cstring>
- #include <cstdlib>
- #include <string>
- #include <vector>
- #include <map>
- #include <set>
- #include <queue>
- #include <stack>
- #include <algorithm>
- using namespace std;
- #define ll long long
- #define _cle(m, a) memset(m, a, sizeof(m))
- #define repu(i, a, b) for(int i = a; i < b; i++)
- #define repd(i, a, b) for(int i = b; i >= a; i--)
- #define sfi(n) scanf("%d", &n)
- #define sfl(n) scanf("%I64d", &n)
- #define pfi(n) printf("%d\n", n)
- #define pfl(n) printf("%I64d\n", n)
- #define MAXN 1000005
- int n, l, m, r, d;
- int t = , mm;
- double dp[][];
- int main()
- {
- while(~scanf("%d%d%d%d", &n, &m, &l, &r) && (n + m + l + r))
- {
- t = ;
- repu(i, , n + ) dp[][i] = 0.0;
- dp[][] = 1.0;
- int c;
- repu(i, , m)
- {
- sfi(d);
- if(l == && r == n) continue;
- c = d / n;
- mm = d - n * c;
- if(mm)
- {
- t = !t;
- repu(j, , n + )
- {
- int lt, rt;
- if((n + (j - mm)) >= n) lt = (n + (j - mm)) - n;
- else lt = (n + (j - mm));
- if((j + mm) >= n) rt = (j + mm) - n;
- else rt = (j + mm);
- if(lt == ) lt = n;
- if(rt == ) rt = n;
- dp[t][j] = (dp[!t][lt] + dp[!t][rt]) / 2.0;
- //cout<<j<<" :"<<dp[t][j]<<endl;
- }
- }
- }
- double ans = 0.0;
- if(l == && r == n) ans = 1.0;
- else
- repu(i, l, r + ) ans += dp[t][i];
- printf("%.4lf\n", ans);
- }
- return ;
- }
AC
- #include <cstdio>
- #include <iostream>
- #include <sstream>
- #include <cmath>
- #include <cstring>
- #include <cstdlib>
- #include <string>
- #include <vector>
- #include <map>
- #include <set>
- #include <queue>
- #include <stack>
- #include <algorithm>
- using namespace std;
- #define ll long long
- #define _cle(m, a) memset(m, a, sizeof(m))
- #define repu(i, a, b) for(int i = a; i < b; i++)
- #define repd(i, a, b) for(int i = b; i >= a; i--)
- #define sfi(n) scanf("%d", &n)
- #define sfl(n) scanf("%I64d", &n)
- #define pfi(n) printf("%d\n", n)
- #define pfl(n) printf("%I64d\n", n)
- #define MAXN 1000005
- int n, l, m, r, d;
- int t = , mm;
- double dp[][];
- int main()
- {
- while(~scanf("%d%d%d%d", &n, &m, &l, &r) && (n + m + l + r))
- {
- t = ;
- repu(i, , n + ) dp[][i] = 0.0;
- dp[][] = 1.0;
- int c;
- repu(i, , m)
- {
- sfi(d);
- if(l == && r == n) continue;
- c = d / n;
- mm = d - n * c;
- if(mm)
- {
- t = !t;
- repu(j, , n + )
- {
- int lt, rt;
- lt = (n + (j - mm)) % n;
- rt = (j + mm) % n;
- // if((n + (j - mm)) >= n) lt = (n + (j - mm)) - n;
- // else lt = (n + (j - mm));
- // if((j + mm) >= n) rt = (j + mm) - n;
- // else rt = (j + mm);
- if(lt == ) lt = n;
- if(rt == ) rt = n;
- dp[t][j] = (dp[!t][lt] + dp[!t][rt]) / 2.0;
- //cout<<j<<" :"<<dp[t][j]<<endl;
- }
- }
- }
- double ans = 0.0;
- if(l == && r == n) ans = 1.0;
- else
- repu(i, l, r + ) ans += dp[t][i];
- printf("%.4lf\n", ans);
- }
- return ;
- }
TLE
% 慎用啊必须,虽然不知道为什么
HDU 4576 简单概率 + 滚动数组DP(大坑)的更多相关文章
- hdu 4576(简单概率dp | 矩阵优化)
艰难的一道题,体现出菜菜的我... 首先,先吐槽下. 这题到底出题人是怎么想的,用普通概率dp水过??? 那为什么我概率dp写的稍微烂点就一直tle? 感觉很不公平.大家算法都一致,因为我程序没有那 ...
- Palindrome_滚动数组&&DP
Description A palindrome is a symmetrical string, that is, a string read identically from left to ri ...
- poj - 1159 - Palindrome(滚动数组dp)
题意:一个长为N的字符串( 3 <= N <= 5000).问最少插入多少个字符使其变成回文串. 题目链接:http://poj.org/problem?id=1159 -->> ...
- HDU 3853LOOPS(简单概率DP)
HDU 3853 LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...
- HDU 4576 Robot(概率dp)
题目 /*********************复制来的大致题意********************** 有N个数字,M个操作, 区间L, R. 然后问经过M个操作后落在[L, R]的概率. * ...
- Making the Grade_滚动数组&&dp
Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...
- Gym 100507G The Debut Album (滚动数组dp)
The Debut Album 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/G Description Pop-group & ...
- 【滚动数组】 dp poj 1036
题意:一群匪徒要进入一个酒店.酒店的门有k+1个状态,每个匪徒的参数是:进入时间,符合的状态,携带的钱. 酒店的门刚开始状态0,问最多这个酒店能得到的钱数. 思路: dp数组为DP[T][K]. 转移 ...
- hdu 4576 (简单dp+滚动数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576 题意:给出1~n的环,m个操作,每次能顺时针或逆时针走w步,询问最后在l~r这段区间内概率.(1 ...
随机推荐
- HTML5的数据自动补齐功能
使用datalist元素,HTML5允许使用一组数据来生成自动补齐功能,现在你不需要使用第三方js代码或者类库啦! <input name="frameworks" list ...
- Uva 10917
题目链接:http://vjudge.net/contest/143062#problem/A 题意:一个人要从点1去到点2,中间还有很多点和很多条边.问你如果他每次走的边(a,b)都满足:a点到目标 ...
- Visual Studio的Web Performance Test提取规则详解(3)
总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...
- Linux下环境变量设置
分类 Linux下的环境变量按生存周期来划分,可以划分为两种: 1)永久的:需要修改配置文件, 变量永久生效 2)临时的:直接在终端使用export命令声明即可,但是关闭shell后失效. 设置方法 ...
- centos7 禁止防火墙
#CentOS .0默认使用的是firewall作为防火墙,这里改为iptables防火墙. #firewall: systemctl start firewalld.service#启动firewa ...
- Deep Learning 6_深度学习UFLDL教程:Softmax Regression_Exercise(斯坦福大学深度学习教程)
前言 练习内容:Exercise:Softmax Regression.完成MNIST手写数字数据库中手写数字的识别,即:用6万个已标注数据(即:6万张28*28的图像块(patches)),作训练数 ...
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- 分方式缓存常用的一致性hash是什么原理
分方式缓存常用的一致性hash是什么原理 一致性hash是用来解决什么问题的?先看一个场景有n个cache服务器,一个对象object映射到哪个cache上呢?可以采用通用方法计算object的has ...
- .AndroidRuntimeException: requestFeature() must be called before adding content
有以下几种情况: 1. setContentView(R.layout.activity_list); requestWindowFeature(Window.FEATURE_NO_TITLE); 修 ...
- 使用QTP测试Web对象
加载Web插件先启动QTP,再启动浏览器,否则Web元素识别不了最新版本QTP11支持的浏览器:IE:6.7.8Firefox:3.0.x.3.5.QTP支持直接访问DOM(Document Obje ...