题目:https://www.acwing.com/problem/content/description/234/

题意:有n次挑战,每次挑战获胜可以得到一个地图碎片值为-1  或者  可以得到一个包包用来装地图碎片,最开始有一个包,每个挑战有一个获胜概率,现在让你求至少获胜L轮,挑战完n轮后能用背包装下地图碎片的概率

思路:我们首先可以观察到地图碎片值为-1,背包为正,也就是说最后总和加起来是一个非负数即可,然后我们还可以看到地图负数只有-1,也就是说全部为地图碎片也只有-200,我们只要有一个200的包就能装下所有的,所以多余的也就没有用了,这题每个挑战都要分赢或者输,情况很多,很明显应该是一个DP

我们用dp[i][j][k]  ,     i代表第几个挑战,j代表赢了多少轮,k代表当前剩余空间值

我原先的想法是开一个400,以200为原点,这样中间为负数也不会溢出,然后最后只要计算>=200的就可以了,但是我好像写挫了,

我又改成了先对挑战的价值排序,从大到小,因为挑战是不分先后的,所以我们可以先把能领到包包的挑战打了,这样就不会出现负数越界的问题

最后我们只要计算  j>=l 的值即可

#include<bits/stdc++.h>
#define maxn 405
#define mod 1000000007
using namespace std;
typedef long long ll;
struct sss
{
double x;
ll y;
}a[maxn];
ll n,l,k;
double dp[][maxn][maxn];
int cmp(struct sss x,struct sss y){
return x.y>y.y;
}
int main(){
scanf("%lld%lld%lld",&n,&l,&k);
for(int i=;i<=n;i++) scanf("%lf",&a[i].x);
for(int i=;i<=n;i++) scanf("%lld",&a[i].y);
sort(a+,a+n+,cmp);
dp[][][min(n,k)]=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
for(int w=;w<maxn;w++){
if(w+a[i].y>=)
dp[][j+][min(n,w+a[i].y)]+=dp[][j][w]*a[i].x/100.0;
dp[][j][w]+=dp[][j][w]*(-a[i].x/100.0);
}
}
for(int j=;j<=n;j++){
for(int w=;w<maxn;w++){
dp[][j][w]=dp[][j][w];
dp[][j][w]=;
}
}
}
double sum=;
for(int i=l;i<=n;i++){
for(int j=;j<=n;j++){
sum+=dp[][i][j];
}
}
printf("%.6lf",sum);
}

AcWing 232. 守卫者的挑战 (期望DP)打卡的更多相关文章

  1. 【BZOJ3029】守卫者的挑战 [期望DP]

    守卫者的挑战 Time Limit: 2 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 打开了黑魔法师Vani的大门,队 ...

  2. AcWing 232. 守卫者的挑战

    题目链接 大型补档计划. 比较显然的dp 设 \(f[i][j][k]\) 为前 \(i\) 次,擂台上了 \(j\) 次,空闲容量(背包 - 使用的)为 \(k\) 的概率. 不上擂台的转移:\(f ...

  3. tyvj P1864 [Poetize I]守卫者的挑战(DP+概率)

    P1864 [Poetize I]守卫者的挑战 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜 ...

  4. TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)

    题目链接...无 题目: P1864 [Poetize I]守卫者的挑战 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 打开了黑魔法师Vani的大门,队员们 ...

  5. 【bzoj3029】守卫者的挑战 概率dp

    题目描述 给出一个数$m$和$n$次操作,第$i$操作有$p_i$的概率成功,成功后会使$m$加上$a_i$($a_i$为正整数或$-1$),求$n$次操作以后成功的操作次数不少于$l$且$m\ge ...

  6. bzoj 3029 守卫者的挑战 —— 概率DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3029 设 f[i][j][k] 表示第 i 次挑战,已经成功 j 次,剩余容量为 k 的概率 ...

  7. 【TYVJ1864】[Poetize I]守卫者的挑战 概率与期望

    [TYVJ1864][Poetize I]守卫者的挑战 描述 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地.突然,眼前一道亮光闪过."我 ...

  8. TYVJ-P1864 守卫者的挑战 题解

    P1864 [Poetize I]守卫者的挑战 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜 ...

  9. 【专题】概率期望DP

    11.22:保持更新状态:主要发一些相关的题目和个人理解 (P.S.如果觉得简单,可以直接看后面的题目) upd 11.30 更完了 [NO.1] UVA12230 Crossing Rivers  ...

随机推荐

  1. umeditor word文档图片粘贴-自动上传到服务器

    图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...

  2. Apache搭建http网站服务器入门教程

    Apache搭建http网站服务器入门教程 准备工具 一台带有Linux系统的主机,这里使用CentOS 7.1 64位系统 一个备案过的域名,这里使用www.hellopage.cn 一台可以访问网 ...

  3. <三剑客> 老大:awk命令用法

    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一 个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是lin ...

  4. 汇编 “error A2031”

    assume cs:code code segment main: mov ax,0020h mov ds,ax ;指定段地址0200h mov dx,0h mov cx,003fh s: mov [ ...

  5. 【VisualStdio】在VS2015中显示上下文菜单中“创建单元测试”菜单

    ---恢复内容开始--- VS2012以后创建单元测试的选项被默认隐藏了,创建单元测试变得无比低效率.看msdn的说法好像是想推荐使用Intell Test来替代单元测试的用途,但是还没摸清楚也不敢瞎 ...

  6. WebBrowser元素定位的常用方法

    在delphi中想要使用WebBrowser控件,需要一了解一些浏览器和网站制作的知识.操作元素(增删改查).需要提前了解HTML DOM.

  7. 关于vsftp出现Restarting vsftpd (via systemctl): Job for vsftpd.service failed because the control 的解决办法

    转载于:http://blog.csdn.net/it_dream_er/article/details/50783111 刚刚在搭建ftp服务器时,在配置好一切的参数之后,在我重启时,出现了无法启动 ...

  8. 网络命令-nc(二)

    继续Netcat 这个命令吧 1:远程拷贝文件 在本地输出 文件debian.img 到 192.168.5.40 主机12345端口监听 nc -v 192.168.5.40 12345 < ...

  9. Percona XtraDB Cluster集群5.7 开启SSL认证

    mysqldump -uroot -p --ssl-cert=/data/mysql/client-cert.pem --ssl-key=/data/mysql/client-key.pem -h 1 ...

  10. python 字典(dictionary)一些方法

    1.python 字典(Dictionary) keys() 函数以列表返回一个字典所有的键. keys()语法: dict.keys() 2.setdefault()方法 python字典setde ...