[BZOJ1076]奖励关-状压+期望
来源:互联网 发布:mp3剪切合并软件 编辑:程序博客网 时间:2024/06/08 11:49
说在前面
挺简单的一道题。一开始看别人题解里的dp状态定义看的一脸mengbi…
理解状态之后就是基础期望了
题目
BZOJ1076
题意
(由于原题目描述十分不清真,我还是自己写题意好啦)
现在有N个物品,K个回合。每个物品都有一个属性:权值v。
每个回合,这N个物品都会等概率的被抛出。你可以选择是否拾取它,并且你的选取尽量达到最优策略。有些物品不是你想拾取就能拾取的,除非你在拾取它之前已经拥有某些物品。每个回合结束时,未被拾取的物品会被清空。
输入&&输出
第一行输入两个整数K,N
接下来N行,每行若干个数字。第一个数字表示该物品的权值,接下来一些数字表示选取这个物品之前需要选取的物品,以0结尾。
解法
就不说思维了,直接上解法吧。
定义dp[i][state]表示从第i回合开始,当前状态为state时,进行到所有回合结束后的期望得分。(也可以理解为还剩下K-i个回合,初始状态为state时(此时得分还是0),进行完所有回合的期望得分)
很明显有这样的DP方程:(设lim[k]表示k物品的限制)
for( each k ){if( (state&lim[k] ) == lim[k] ) dp[i][state] += max( dp[i][state] , dp[i+1][ state|( 1<<( k-1 )+score[k] ) /*可选就选最大值转移*/else dp[i][state] += dp[i+1][state] /*不可选就直接转移*/}dp[i][state] /= N/*权值除以概率*/
自带大常数的代码
#include <cstdio>#include <cstring>#include <algorithm>using namespace std ;int K , N , lim[20] , score[20] ;double dp[105][1<<15] ;int main(){ scanf( "%d%d" , &K , &N ) ; for( int i = 1 , tmp ; i <= N ; i ++ ){ scanf( "%d" , &score[i] ) ; scanf( "%d" , &tmp ) ; while( tmp ){ lim[i] |= ( 1 << ( tmp - 1 ) ) ; scanf( "%d" , &tmp ) ; } } for( int i = K ; i ; i -- ){ for( int j = 0 ; j < ( 1 << N ) ; j ++ ){ for( int k = 1 ; k <= N ; k ++ ){ if( ( j & lim[k] ) == lim[k] ) dp[i][j] += max( dp[i+1][j] , dp[i+1][ j|( 1 << ( k - 1 ) ) ] + score[k] ) ; else dp[i][j] += dp[i+1][j] ; } dp[i][j] /= N ; } } printf( "%.6f" , dp[1][0] ) ;}
阅读全文
0 0
- [BZOJ1076]奖励关-状压+期望
- bzoj1076 [SCOI2008]奖励关 状压+期望dp
- BZOJ1076 奖励关 期望dp+状压
- 【BZOJ1076】[SCOI2008]奖励关【期望DP】【状压DP】
- [BZOJ1076][SCOI2008]奖励关(状压dp+期望)
- 【BZOJ1076】【SCOI2008】奖励关(期望+状压dp)
- BZOJ1076 [SCOI2008]奖励关 【状压dp + 数学期望】
- [期望DP] BZOJ1076: [SCOI2008]奖励关
- bzoj1076 [SCOI2008]奖励关(期望+dp)
- 【bzoj1076】【SCOI2008】【奖励关】期望最优值dp
- bzoj1076 奖励关SCOI2008 状压与期望DP
- BZOJ1076:奖励关(状压期望dp)
- 【BZOJ1076】奖励关(动态规划,数学期望)
- 【bzoj1076】【SCOI2008】【奖励关】【状压dp】
- 【bzoj1076】[SCOI2008]奖励关 状压DP
- [bzoj1076][SCOI2008]奖励关 状压DP
- [BZOJ1076][SCOI2008]奖励关(状压DP)
- scoi2008奖励关&&bzoj1076
- BZOJ1022: [SHOI2008]小约翰的游戏John
- Python基础小笔记《2017-10-18》
- java面试题-java虚拟机(JVM)
- c++ string和其他类型互转
- tomcat对https配置
- [BZOJ1076]奖励关-状压+期望
- 全面理解Android中的Px,DPI,DIP,Density,Sp等概念
- 行人属性“Person Attribute Recognition with a Jointly-trained Holistic CNN Model”
- hbase集群搭建
- ubuntu16.04(64位)兼容32位程序
- 表
- js 解决 select option 过多 ,筛选过滤功能
- 利用SWIG转换C++接口到Java接口
- javaSE实战--(API)中的集合框架