题目: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 ;
}

最新文章

  1. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
  2. C# 使用 NPOI 库读写 Excel 文件(转载)
  3. Linux Tomcat 开机自启动的方法
  4. CSS布局(上)
  5. TETRIS 项目开发笔记
  6. Test log4net
  7. Chrome系列 Failed to load resource: net::ERR_CACHE_MISS
  8. PHPCMS如何实现后台访问限制?
  9. Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
  10. 优步uber司机怎么注册不了?注册优步司机问题要点
  11. phplib系统开发经验总结
  12. Qt 打包发布 不能动态打开图片显示问题
  13. 关于Task的一点思考和建议
  14. POJ 2195Going Home(网络流之最小费用流)
  15. 后缀数组之hihocoder 重复旋律1-4
  16. Swift基础之init方法,实例方法,类方法(静态方法)的使用(多标签Demo)
  17. Spring对象生存周期(Scope)的分析
  18. 机器学习之--线性回归sigmoid函数分类
  19. 报错!!!Servlet.service() for servlet [action] in context with path [/myssh] threw exception [java.lang.NullPointerException] with root cause java.lang.NullPointerException
  20. linux命令学习head和tail

热门文章

  1. ztree 树状图——例
  2. js 获取自定义属性值
  3. MySQL的xml中对大于,小于,等于的处理转换
  4. 移植 Busybox
  5. uoj37 主旋律
  6. LoadRunner中字符串的操作
  7. LoadRunner脚本编写(5)-- 检查点,关联等函数
  8. OpenCASCADE圆与平面求交
  9. 04_springmvc注解开发
  10. Node中js获取异步操作的结果