当前位置: 首页 > news >正文

【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

【题意】n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡。每种宝物有一个价值(有负数)。每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益。k<=100,n<=15。

【算法】期望DP+状压DP

【题解】主要需要记录的状态是前缀已有宝物,所以设f[i][S]表示前i关已有宝物列表S的期望收益。

根据全期望公式,依赖于第i+1关的宝物选择:(如果列表符合)

$$f[i][S]=\sum_{i=1}^{n}\frac{1}{n}*Max(f[i+1][S'],f[i+1][S])\ \ ,\ \ S'=S|(1<<(i-1))$$

倒推是因为已知前缀列表S的情况下,很容易判断下一关宝物是否可捡。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int inf=100000;
int a[20],n,m,v[20];
double f[200][70000];
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d",&v[i]);
        int u;scanf("%d",&u);
        a[i]=0;
        while(u!=0)
        {
            a[i]|=(1<<(u-1));
            scanf("%d",&u);
        }
    }
    int maxe=(1<<m)-1;
    for(int i=n-1;i>=0;i--)
    {
        for(int j=0;j<=maxe;j++)
        {
            f[i][j]=0;
            for(int k=1;k<=m;k++)
            {
                if((a[k]&j)==a[k])f[i][j]+=max(f[i+1][j],f[i+1][j|(1<<(k-1))]+v[k]);
                else f[i][j]+=f[i+1][j];
            }
            f[i][j]/=m;
        }
    }
    printf("%.6lf",f[0][0]);
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/7220082.html

相关文章:

  • 2017年全球大数据正在朝这七个趋势发展
  • SQLSERVER吞噬内存解决记录
  • 巨头间数据之争频发的背后,是用户对于个人数据话语权的缺失
  • 结合人体部位,将虚拟现实做到更完美
  • PWA基础知识整理及实践
  • Hibernate【映射】知识要点
  • RT-Thread信号量使用(动态/静态信号量) 及 信号量的四种使用场合
  • 数据库===轻量级mysql数据库管理工具
  • Java类加载器ClassLoader
  • 速查笔记(Linux Shell编程上)
  • Struts2【UI标签、数据回显、资源国际化】
  • [case10]使用RSQL实现端到端的动态查询
  • webpack4入门
  • SSM-Spring-17:Spring中aspectJ注解版
  • 前端Sass回顾以及Compass入门小记
  • 收藏网友的 源程序下载网
  • DataBase in Android
  • ES学习笔记(12)--Symbol
  • Laravel5.4 Queues队列学习
  • PHP那些事儿
  • React系列之 Redux 架构模式
  • 第十八天-企业应用架构模式-基本模式
  • ------- 计算机网络基础
  • 理解在java “”i=i++;”所发生的事情
  • 每天10道Java面试题,跟我走,offer有!
  • 山寨一个 Promise
  • 实战|智能家居行业移动应用性能分析
  • 终端用户监控:真实用户监控还是模拟监控?
  • MyCAT水平分库
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​虚拟化系列介绍(十)
  • (12)Hive调优——count distinct去重优化
  • (13):Silverlight 2 数据与通信之WebRequest
  • (C++)八皇后问题
  • (day 12)JavaScript学习笔记(数组3)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (汇总)os模块以及shutil模块对文件的操作
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)Linux下编译安装log4cxx
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • 、写入Shellcode到注册表上线
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET委托:一个关于C#的睡前故事
  • @RequestMapping 的作用是什么?
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [20190401]关于semtimedop函数调用.txt
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [APIO2012] 派遣 dispatching