hdu--4576--概率dp<见过最简单的概率dp>
2014-10-26 21:54
197 查看
看到 expected possibility 一下子 又觉得是概率dp了..
这题 也的确是了
但做的狠无语啊 尝试了2种 一个是TLE 一个是AC 但也要花掉了3000多ms。。
而且 我也觉得这两种 区别不大啊 思想是一样的 就是处理上有点区别..
应该是第二种TLE的故意被卡了时间吧 my guess
这题的话 思路很简单 就是一层一层的递推下来 并且这一层的状态只与上一层有关~
其实 每次可以选择走的方案数就是: 2^1 --> 2^2 --> 2^3 --> ......->2^m
不用管2^m的值会很大 因为一共只有200个格子 n<=200 那么我只要遍历n就够了
求大神 帮我纠错 第一份代码 =_=
刚开始用了set来处理 严重tle 真烦..
View Code
today:
昨天
你说
明天
岁就就是如此这般地被我们蹉跎了
这题 也的确是了
但做的狠无语啊 尝试了2种 一个是TLE 一个是AC 但也要花掉了3000多ms。。
而且 我也觉得这两种 区别不大啊 思想是一样的 就是处理上有点区别..
应该是第二种TLE的故意被卡了时间吧 my guess
这题的话 思路很简单 就是一层一层的递推下来 并且这一层的状态只与上一层有关~
其实 每次可以选择走的方案数就是: 2^1 --> 2^2 --> 2^3 --> ......->2^m
不用管2^m的值会很大 因为一共只有200个格子 n<=200 那么我只要遍历n就够了
求大神 帮我纠错 第一份代码 =_=
刚开始用了set来处理 严重tle 真烦..
#include <iostream> #include <iomanip> using namespace std; const int size = 210; double dp[2][size]; int main( ) { cin.sync_with_stdio(false); int n , m , L , R , k , x , y , w; double ans; while( cin >> n >> m >> L >> R && ( n || m || L || R ) ) { k = 1; for( int i = 0 ; i<=n ; i++ ) { dp[0][i] = dp[1][i] = 0.0; } dp[0][0] = 1.0; for( int i = 0 ; i<m ; i++ ) { cin >> w; for( int j = 0 ; j<n ; j++ ) { if( dp[!k][j] ) { dp[k][(j+w)%n] += dp[!k][j] * 0.5; dp[k][(j-w+n)%n] += dp[!k][j] * 0.5; } dp[!k][j] = 0; } k = !k; } ans = 0; for( int i = L-1 ; i<=R-1 ; i++ ) { ans += dp[ m&1 ][i]; } cout << setiosflags(ios::fixed); cout << setprecision(4) << ans << endl; } return 0; }
View Code
today:
昨天
你说
明天
岁就就是如此这般地被我们蹉跎了
相关文章推荐
- hdu 4576(简单概率dp | 矩阵优化)
- hdu 4576 Robot(简单的概率DP)
- (CF 148D Bag of mice)<简单概率DP>
- HDU 4576 (概率dp的简单应用)只有两种情况
- zoj 2271 Chance to Encounter a Girl <概率DP>
- hdu--1176---dp && 滚动数组优化<porker>
- [ACM] HDU 4576 Robot (概率DP,滚动数组)
- hdu 4576(概率dp+滚动数组)
- 简单概率dp-hdu-4487-Maximum Random Walk
- HDU 4576 Robot (概率DP)
- hdu--1869--见过最好听的题名<附送1870>
- 简单概率dp(期望)-hdu-4405-Aeroplane chess
- 简单概率DP——hdu4405
- hdu 3835 简单概率dp
- hdu--2546--dp<01背包>
- 树形DP <简单树形DP 对我来说重点在建树> hlg 1474
- zoj 3329 One Person Game <概率DP>
- HDU 4576 Robot (概率DP)
- 简单概率dp(期望)-hdu-3853-LOOPS
- HDU 4576 Robot(概率dp)