题目: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. MySqL rownum 序号 类似于 oracle的rownum

    mysql中没有 rownum 序号的功能,所以需要自己去实现序号的功能. @rownum 只是一个变量 可以换为 @i 等其他变量,但必须有@符号 SELECT @rownum:=@rownum+1 ...

  2. buuctf | [强网杯 2019]随便注

    1' and '0,1' and '1  : 单引号闭合 1' order by 3--+ : 猜字段 1' union select 1,database()# :开始注入,发现正则过滤 1' an ...

  3. 前端每日实战:23# 视频演示如何用纯 CSS 创作一个菜单反色填充特效

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览.https://codepen.io/comehope/pen/qYMoPo 可交互视频教程 此视频是 ...

  4. 2018-2019-2 20175213实验四 《Android开发基础》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:吕正宏 学号:20175213 指导教师:娄嘉鹏 实验日期:2019年5月14日 实验时间:13:45 - 21:00 实验序号:实验 ...

  5. datatbales 使用笔记

    实例: var datatable_obj = null; $(document).ready(function(){ datatable_obj = $('#merchant-list').Data ...

  6. 用 Flask 来写个轻博客 (33) — 使用 Flask-RESTful 来构建 RESTful API 之二

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 构建 RESTful Flask API 定义资源路由 格式 ...

  7. spark为什么比mapreduce运行速度快很多

    比较重要的2个原因 –            1.基于内存 mapreduce任务每次都会把结果数据落地到磁盘,后续有其他的job需要依赖于前面job的输出结果,这里就需要进行大量的磁盘io操作,获取 ...

  8. mongodb配置详解

    #启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=false # 日志文件位置 logpath=/usr/loc ...

  9. 利用float与overflow:hidden实现移动端两栏自适应布局

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. golang的数据类型之字符类型

    字符类型使用细节 1)字符常量是用单引号('')括起来的单个字符.例如:var c1 byte = 'a' var c2 int = '中' var c3 byte = '9' 2) Go中允许使用转 ...