题目: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. 【HDOJ6604】Blow up the city(支配树)

    题意:给定一个n点m边的DAG,将只有入边的点称为周驿东点 q次询问,每次给定a,b两点,询问删去某个点x和其相连的所有边,能使a,b至少其中之一不能到达任何周驿东点的x的个数 n,q<=1e5 ...

  2. opencc模块用langconv替换

    将一下两个py下载并放入代码目录:https://raw.githubusercontent.com/skydark/nstools/master/zhtools/langconv.py https: ...

  3. 尽量用类型化的常量替代预处理器的 #DEFINE 方法

    类型化常量 (TYPED CONSTANTS) #define ANIMATION_DURATION 0.3 这是一个预处理器指令,当编译器在代码中发现有 ANIMATION_DURATION 时,就 ...

  4. python数据储存

    python数据储存 csv文件的操作 安装csv包打开cmd 执行 pip install csv引入的模块名为csv 读取文件 with open("xx.csv"," ...

  5. mybatis 查询一对一

    官方文档 Mapper接口 public interface UserMapper { User getUser(int userId); } public interface ArticleMapp ...

  6. Scrum 指南总结

    https://wenku.baidu.com/view/86e0979176eeaeaad1f3305a.html 原文地址:

  7. 1381. 删除 (Standard IO)

    题目描述: Alice上化学课时又分心了,他首先画了一个3行N列的表格,然后把数字1到N填入表格的第一行,保证每个数只出现一次,另外两行他也填入数字1到N,但不限制每个数字的出现次数.Alice现在想 ...

  8. QTP加载第三方DLL(C#)实现清除IE缓存(转)

    由于QTP的默认编程语言是VBS, 而VBS是一种相对来说功能比较局限的脚本语言,因此我们在编写自动化测试脚本时会有很多功能无法很好的实现. 相对来说c#是一种高级编程语言, 可以实现大多数windo ...

  9. web前端知识体系大全【转载】

    自己总结的web前端知识体系大全[欢迎补充]   1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在 ...

  10. HDU 1029Ignatius and the Princess IV

    Ignatius and the Princess IV Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32767 K ( ...