题目: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. 2016.8.17上午纪中初中部NOIP普及组比赛

    2016.8.17上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1335 本来觉得自己能考高分,但只得160分,并列第九.至少又挤 ...

  2. mysql权限操作

    1.mysql权限操作 grant select,insert on test1.tb1 to ltx2@127.0.0.1 默认权限:什么都没有 2.用户管理特殊命令: 创建用户:create us ...

  3. 二分+2-sat——hdu3062

    hdu3622升级版 注意要保留两位小数 /* 给定n对圆心(x,y),要求从每对里找到一个点画圆,不可相交 使得最小半径最大 二分答案,设最小半径为r 然后两两配对一次进行判断,在2-sat上连边即 ...

  4. window 批量修改或去除文件后缀名

    for /r %i in (*.!ut) do ren "%i" *. 转自:https://blog.csdn.net/zhang_ruisen/article/details/ ...

  5. codeforces 514E-Darth Vader and Tree

    题意:有个无限大的有根树,每个节点都有N个孩子,每个孩子距离父亲节点的距离为di.求距离根节点距离<=x的节点个数. 思路:注意观察数据范围,每一个d[i]均小于等于100所以我们可以设dp[i ...

  6. eclipse安装m2e

    Installation You can install last M2Eclipse release by using the following update site from within E ...

  7. WhaleCTF之隐写-Find

    WhaleCTF之隐写-Find 前往题目 图片保存到本地,用Stegsolve打开图片 找到二维码 用微信或qq扫描,得到flag~

  8. CheckBox自定义样式

    效果: xmal代码: <Style x:Key="CheckBoxStyle" TargetType="{x:Type CheckBox}"> & ...

  9. 如何做系列(5)-james mail安装总结

    安装james还是比较复杂的,我们在EC2上花费了差不多一天,发现不能发送邮件到外网,后续又陆续花了几天的时间,才成功搭建james邮件服务器. 现在愿意把我们的经历分享出来,让大家参考一下. 由于项 ...

  10. urllib与urllib2的学习总结

    先啰嗦一句,我使用的版本是python2.7,没有使用3.X的原因是我觉得2.7的扩展比较多,且较之前的版本变化不大,使用顺手.3.X简直就是革命性的变化,用的蹩手.3.x的版本urllib与urll ...