博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu Robberies
阅读量:6407 次
发布时间:2019-06-23

本文共 979 字,大约阅读时间需要 3 分钟。

这道题目应该在理解上会有一点问题。这道题的概率不是用来加的,而是用来乘的。这道题要的是在能逃跑的前提下,获得的最大money,而题目中给的概率是被抓的概率,所以要先有一个预处理,之后只要列出状态转移方程就可以轻松解决了:dp[i]=max{dp[i],dp[i-v[i]]*p[i]},注意初始条件,dp[0]=1,因为若抢劫金额为0的话,那么逃跑的概率就是1.

#include"iostream"#include"stdio.h"#include"cmath"#include"algorithm"#include"string.h"#define mx 100005using namespace std;double p[mx],dp[mx];int sum[mx],v[mx];double max(double a,double b){    return a>b?a:b;}int main(){   int t,n,i,j;   double P;   cin>>t;   while(t--)   {       scanf("%lf%d",&P,&n);       P=1-P;//最大的逃跑率       sum[0]=0;       for(i=1;i<=n;i++)       {           cin>>v[i]>>p[i];           p[i]=1-p[i];//逃跑的概率           sum[i]=sum[i-1]+v[i];       }       memset(dp,0.0,sizeof(dp));       dp[0]=1;       for(i=1;i<=n;i++)       {           for(j=sum[n];j>=v[i];j--)           {               dp[j]=max(dp[j],dp[j-v[i]]*p[i]);           }       }       for(i=sum[n];i>=1;i--)        if(dp[i]>P) break;       cout<<
View Code

 

转载于:https://www.cnblogs.com/acm-jing/p/4388239.html

你可能感兴趣的文章
centos7.x搭建svn server
查看>>
Oracle数据库中查看所有表和字段以及表注释.字段注释
查看>>
原码编译安装openssh6.7p1
查看>>
tuxedo install and configure in as4 u5
查看>>
防火墙基础知识
查看>>
项目实战:自定义监控项--监控CPU信息
查看>>
mysql DATE_FORMAT(date, format) 函数
查看>>
easyui-datetimebox设置默认时分秒00:00:00
查看>>
蚂蚁分类信息系统5.8多城市UTF8开源优化版
查看>>
Linux学习笔记序列文章——概述
查看>>
构建高可用服务器之五 Keepalive冗余LVS
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
分享Silverlight新鲜事 - Silverlight Firestarter全球会议
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>