HDU 1203 I NEED A OFFER 概率DP
来源:互联网 发布:深入浅出rails 知乎 编辑:程序博客网 时间:2024/04/27 23:14
传送门:HDU 1203 I NEED A OFFER
分析:
这是一道概率DP的题目。注意:
1、要初始化成1.0
2、用补集求概率
3、DP的过程中,概率要相乘而不是相加或者相减
代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define INF 0x3f3f3f3f#define ms(x, y) memset(x, y, sizeof(x))const double PI = acos(-1.0), eps = 1e-8;int main() { int n,m; int i,j,k; int V[10010]; double W[10010],dp[10010]; while(scanf("%d %d",&n,&m) && (n || m)) { for(i=1;i<=m;i++) { scanf("%d %lf",&V[i],&W[i]); //這裏要計算不能的概率(补集思想) W[i] = 1.0-W[i]; } // dp数组初始化(假设不管多少钱都不能通过) 必须初始化到0 for(i=0;i<=n;i++) dp[i] = 1.0; for(i=1;i<=m;i++) { // 遍历学校 for(j=n;j>=V[i];j--) { // 遍历各种价格情况 // 对当前我手上j万元,到底要还是不要投第i个学校 dp[j] = min(dp[j],dp[j-V[i]]*W[i]); } } // dp[n]即是代表 n万元 对应的求学成功的概率 printf("%.1lf%%\n",(1-dp[n])*100); } return 0;}
1 0
- HDU 1203 I NEED A OFFER! (dp+概率)
- hdu 1203 I NEED A OFFER!(概率dp)
- HDU 1203 I NEED A OFFER!(概率DP)
- HDU 1203 I NEED A OFFER 概率DP
- hdu 1203 I NEED A OFFER! dp
- HDU 1203 I NEED A OFFER! 【DP】
- HDU 1203 I NEED A OFFER! DP
- HDU1203 I NEED A OFFER!-概率dp
- HDU 1203 I NEED A OFFER! 最大概率
- HDU 1203(I NEED A OFFER!)01背包+概率计算
- HDU 1203 I NEED A OFFER!(01背包+概率)
- hdu 1023 I NEED A OFFER!(dp)
- hdu I NEED A OFFER!(DP)
- I NEED A OFFER!(dp).HDU
- hdu 1203I NEED A OFFER!(DP)
- hdu 1203 dp(0,1 背包) I NEED A OFFER!
- hdu 1203 I NEED A OFFER! (水题,dp)
- HDU 1203 I NEED A OFFER! 01背包 dp
- Lua中的九九乘法表以及字符串拼接
- php怎样生成一个32位的随机字符串?
- Mybatis学习(一)批量删除
- context理解
- Swift 设置字体
- HDU 1203 I NEED A OFFER 概率DP
- gh0st files
- 15.5 Swift隐式强引用
- 对角线和
- Redis及其Sentinel配置项详细说明
- 常用的学习网站
- Mapbox 地图SDK极速集成指导
- Subsequence 二分搜索
- No2.新建线程