期望DP入门(POJ 1190 ,POJ 2609)
来源:互联网 发布:嘀哩嘀哩 知乎 编辑:程序博客网 时间:2024/06/02 00:46
通过这两道比较简单的题目算是入门一下期望DP。
期望DP是从后往前,概率DP是从前往后,二者还是有一定的相似性的。
当前的期望等于子期望加起来加上转移花费
POJ 1190
每次转移花费为1,通过虫洞没有花费。
对于每个位置如果是虫洞的起点的话就直接dp起点等于dp终点,如果不是那就是由当前点后面的6个点转移过来的。
#include <cstdio>#include <algorithm>using namespace std;const int INF = 100000000;int n , m , best , minv[22] , mins[22];void Init(){ for(int i = 1 ; i <= 20 ; i++ ) { minv[i] = minv[i-1] + i * i * i; mins[i] = mins[i-1] + 2 * i * i; }}void DFS(int dep,int sumv,int sums ,int r ,int h){ if(dep == 0) { if(sumv == n && sums < best) best = sums; return; } if((sumv+minv[dep-1]>n)||(sums+mins[dep-1]>best)||(2*(n-sumv)/r+sums>=best)) return; for(int i = r-1 ; i >= dep ; i-- ) { if(dep == m) sums = i*i; int max_h = min(( n - minv[dep-1] - sumv ) / (i*i) , h-1); for(int j = max_h ; j >= dep ; j--) { DFS(dep-1,sumv + j * i * i , sums + 2 * i * j , i , j); } }}int main(){ scanf("%d%d",&n,&m); best = INF; DFS(m,0,0,n+1,n+1); if(best == INF) best = 0; printf("%d\n",best); return 0;}
POJ 2096
用dp[i][j]代表是由已经检查出i种bug位于j种系统中,那么 dp[i][j] 可以转移到 dp[i][j],dp[i+1][j],dp[i][j+1],dp[i+1][j+1],转移的花费为1.
#include <cstdio>#include <iostream>using namespace std;double dp[1005][1005];int main(){ int n, s, ns; cin >> n >> s; ns = n*s; dp[n][s] = 0.0; for (int i = n; i >= 0; i--) for (int j = s; j >= 0; j--) { if ( i == n && j == s ) continue; dp[i][j] = ( ns + (n-i)*j*dp[i+1][j] + i*(s-j)*dp[i][j+1] + (n-i)*(s-j)*dp[i+1][j+1] )/( ns - i*j ); } printf("%.4lf\n", dp[0][0]); return 0;}
阅读全文
0 0
- 期望DP入门(POJ 1190 ,POJ 2609)
- poj 2096(期望dp)
- poj 3682(期望dp)
- poj 2096 Collecting Bugs (期望dp入门)
- [POJ]2096 Collecting Bugs 期望dp入门
- POJ 2096 期望DP
- POJ 2096 期望dp
- poj 2096 Collecting Bugs(期望DP)
- POJ 2096 Collecting Bugs(dp 期望)
- POJ 3156 Interconnect(期望DP)
- POJ 2096 Collecting Bugs(期望DP)
- poj Collecting Bugs (期望dp)
- POJ 2096 Collecting Bugs 概率dp 求期望 入门
- POJ 2096 Collecting Bugs DP求数学期望 入门
- poj 2096(dp数学期望)
- Poj 2096 (dp求期望)
- poj 2096 dp 求 期望
- POJ 3156 HASH 期望DP
- 母函数 HDU-1171 Big Event in HDU
- iOS与安卓的区别 浅谈ios为什么比安卓流畅
- CSU 1811 Tree Intersection(莫队算法)
- C++中直接拒绝编译器自动生成copy constructor和copy operator=操作(6)---《Effective C++》
- POJ2677--Tour DP
- 期望DP入门(POJ 1190 ,POJ 2609)
- qduoj LC的课后辅导(单调栈)
- [RK3288][Android6.0] 调试笔记 --- 如何修改/dev/ttySx后面的数字号
- 线程同步的方式
- PLSQL与SQL执行有什么不同
- Electron: HTML + Javascript 开发桌面应用程序
- Oracle查询最近几天,每小时归档日志产生数量--脚本
- Android读取第三方应用列表并卸载
- MathJax 基础 (1):基础语法