题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3029

先随便写了个dfs,记录“前 i 次、成功 j 次、容量-残片=k”的概率。因为是否可行只和“成功次数”还有“容量-残片个数”有关,和容量、残片具体数量无关。准备记忆化,但发现状态存不下。

#include<iostream>
#include<cstdio>
#include<cstring>
#define db double
using namespace std;
const int N=,M=;
int n,l,K,a[N];
db p[N],ans;
void dfs(int i,int j,int c,double w)//至少有c个
{
if(c>n)c=n;
if(i>n)
{
if(j>=l&&c>=)ans+=w;return;
}
if(j+(n-i+)<l)return;
if(a[i]>=)
{
dfs(i+,j+,c+a[i],w*p[i]);
dfs(i+,j,c,w*(-p[i]));
}
else
{
dfs(i+,j+,c-,w*p[i]);
dfs(i+,j,c,w*(-p[i]));
}
}
int main()
{
scanf("%d%d%d",&n,&l,&K);int x;
for(int i=;i<=n;i++)
{
scanf("%d",&x);p[i]=(db)x/;
}
for(int i=;i<=n;i++)scanf("%d",&a[i]);
dfs(,,K,);
printf("%.6lf\n",ans);
return ;
}

然后想到了 bzoj4247 挂饰 的思路。就是发现“容量-残片数量”大于n的话多出来的部分没什么用,可以把大于n记成等于n。这样第三维就只有2*n啦!然后就可以刷表了。

#include<iostream>
#include<cstdio>
#include<cstring>
#define db double
using namespace std;
const int N=,M=;
int n,l,K,a[N];
db p[N],ans,dp[][N][N<<];
int main()
{
scanf("%d%d%d",&n,&l,&K);int x;
for(int i=;i<=n;i++)
{
scanf("%d",&x);p[i]=(db)x/;
}
for(int i=;i<=n;i++)scanf("%d",&a[i]);
dp[][][min(n,K)+N]=;
for(int i=;i<n;i++)
{
int d=(i&);
for(int j=;j<i;j++)
for(int k=-n;k<=n;k++)dp[!d][j][k+N]=;
for(int j=;j<=i;j++)
for(int k=-n;k<=n;k++)
{
if(a[i+]>=)
{
dp[!d][j+][min(n,k+a[i+])+N]+=dp[d][j][k+N]*p[i+];//+=
dp[!d][j][k+N]+=dp[d][j][k+N]*(-p[i+]);
}
else
{
dp[!d][j+][k-+N]+=dp[d][j][k+N]*p[i+];
dp[!d][j][k+N]+=dp[d][j][k+N]*(-p[i+]);
}
}
}
int d=(n&);
for(int j=l;j<=n;j++)
for(int k=;k<=n;k++)
ans+=dp[d][j][k+N];
printf("%.6lf\n",ans);
return ;
}

bzoj 3029 守卫者的挑战——概率期望dp+状态数思考的更多相关文章

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

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

  2. [bzoj3029] 守卫者的挑战 (概率期望dp)

    传送门 Description 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地.突然,眼前一道亮光闪过."我,Nizem,是黑魔法圣殿的守 ...

  3. bzoj 3029: 守卫者的挑战【概率dp】

    以后写dp还是向后转移吧--写的把前面加起来的版本怎么也调不过去 首先注意,因为地图碎片只占1体积,所以>n,<-n的体积是没用的,所以就可以把体积降到n级别,然后用这场胜负像后转移即可, ...

  4. BZOJ 3029 守卫者的挑战

    题面 Description 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地.突然,眼前一道亮光闪过."我,Nizem,是黑魔法圣殿的守卫 ...

  5. AcWing 232. 守卫者的挑战 (期望DP)打卡

    题目:https://www.acwing.com/problem/content/description/234/ 题意:有n次挑战,每次挑战获胜可以得到一个地图碎片值为-1  或者  可以得到一个 ...

  6. bzoj 4501: 旅行 01分数规划+概率期望dp

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4501 题解: 首先我们不考虑可以删除边的情况下,如何计算期望边数. 然后我们发现这是个有 ...

  7. 【BZOJ-1419】Red is good 概率期望DP

    1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Di ...

  8. 【bzoj4832】[Lydsy2017年4月月赛]抵制克苏恩 概率期望dp

    题目描述 你分别有a.b.c个血量为1.2.3的奴隶主,假设英雄血量无限,问:如果对面下出一个K点攻击力的克苏恩,你的英雄期望会受到到多少伤害. 输入 输入包含多局游戏. 第一行包含一个整数 T (T ...

  9. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

随机推荐

  1. jQuery.event.move

    http://stephband.info/jquery.event.move/ Move events movestart Fired following touchmove or mousemov ...

  2. Aria2 使用

    没错,又是受够了迅雷.旋风的各种奇葩减速(哥哥我还买了了VIP!),IDM 对协议支持又太少还有事没事提示你不是正版三天两头闹着要更新.于是我想起来之前看到过的 Aria2,虽然之前也只是略有耳闻,但 ...

  3. CF891D Sloth

    题意:给你一棵树,你选择删掉一条边,再加上一条边(也要保证为树),问最后树上的节点能够两两完美匹配的加删边方案数? n<=5e5. 标程: #include<cstdio> #inc ...

  4. unordered_map

    #include <iostream> #include <cstdio> #include <queue> #include <algorithm> ...

  5. day07 linux磁盘分区,ps,kill,df,top命令使用

    day07进入单用户模式删除密码不能进入系统问题: SELINUX=disabled 操作系统linux开机流程加电BIOS找到启动介质先读取第一个扇区(MBR)grup找到kernel加载到内存执行 ...

  6. poj3294Life Forms

    传送门 我真是一个垃圾 模板题都不会做 模板题还要别人教 细节写法还要别人教 别人一分钟AC,教我算法还教我写法,最后写出来的别人算法还比我优秀一百倍 数据结构把脑子学傻了,看到题就想怎么用数据结构, ...

  7. VS2010-MFC(对话框:创建对话框类和添加控件变量)

    转自:http://www.jizhuomi.com/software/153.html 前两讲中讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类 ...

  8. C++ 连接上期所CTP交易行情接口

    CTP相关接口和文档下载: http://www.simnow.com.cn/static/softwareDownload.action 相关库文件以及头文件如下: 遇到的问题: 1.运行直接退出了 ...

  9. linux最基础最常用的命令快速手记 — 让手指跟上思考的速度(三)

    这一篇作为姐妹篇的第三篇,废话不多说,我觉得这个比mysql的还要重要,为什么,一旦你摊上linux 敲键盘输入命令简直是要飞的速度,不断的卡壳查命令,效率太低了,而且非常严重的影响思绪,思绪! 某些 ...

  10. 【CF285E】Positions in Permutations

    题目 刷水题涨信心 显然这是个广义容斥,我们现在算一下至少有\(i\)个完美数的方案数就好了 这\(1000\)的数据范围显然在暗示\(n^2\)的dp 我们注意到这个条件大概就是\(P_i=i-1\ ...