正题


题目大意

nnn个球排成一排颜色不同,每次选择一个随机的[1..n][1..n][1..n]中的xxx,然后删掉第xxx个或第n−x+1n-x+1n−x+1个数,求删kkk次之后删掉的白球最多,求删掉数量的期望值


解题思路

考虑状态压缩dpdpdp,定义第一个111所在位数表示剩下的球数,111表示该位置是白球,000表示该位置是黑球。设fsf_sfs​表示状态为sss时的最小期望值。

del(s,i)del(s,i)del(s,i)表示sss去掉第iii个球后的状态,有状态转移方程fs=∑i=1lmax{fdel(s,i)+one(s,i),fdel(s,n−i+1)+one(s,n−i+1)}lf_s=\frac{\sum_{i=1}^lmax\{f_{del(s,i)}+one(s,i),f_{del(s,n-i+1)}+one(s,n-i+1)\}}{l}fs​=l∑i=1l​max{fdel(s,i)​+one(s,i),fdel(s,n−i+1)​+one(s,n−i+1)}​

这样的时间复杂度为O(2nn)O(2^nn)O(2nn)

但是有许多状态是没有使用的,我们对于小的sss可以用一个桶存,对于大的sss我们可以用mapmapmap来存即可


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define XJQ using
#define AK namespace
#define IOI std
XJQ AK IOI;
const int N=35,Lim=1<<24;
int n,k;
double a[Lim];
map<int,double> m;
char str[N];
bool live(int x,int l){int z=x|(1<<l);if(z<Lim)return (a[z]!=-1);return m.count(z);
}
double get(int x,int l){int z=x|(1<<l);if(z<Lim)return a[z];return m[z];
}
void change(int x,int l,double val){int z=x|(1<<l);if(z<Lim) a[z]=val;else m[z]=val;return;
}
int del(int x,int w)
{return ((x>>w+1)<<w)+x%(1<<w);}
double dfs(int s,int l){if(l<=n-k)return 0;if(live(s,l))return get(s,l);double ans=0;for(int i=0;i<l;i++) ans+=(max(dfs(del(s,i),l-1)+((s>>i)&1),dfs(del(s,l-i-1),l-1)+((s>>(l-i-1))&1)))/l;change(s,l,ans);return ans;
}
int main()
{scanf("%d%d",&n,&k);scanf("%s",str);int s=0;for(int i=0;i<Lim;i++)a[i]=-1;for(int i=0;i<n;i++)s|=((str[i]=='W')<<i);printf("%.6lf",dfs(s,n));
}

nssl1468-V【状压,数学期望,dfs】相关推荐

  1. 有趣的题目:简单深搜之数独与靶型数独--二进制状压加速与dfs数独剪枝

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K 题目链接http://poj.org/problem?id=2676 Description Sudo ...

  2. 【Codeforces Gym - 101635C Macarons 】【矩阵快速幂+状压】【dfs时间换空间】

    [链接] http://codeforces.com/gym/101635/attachments [题意] 求用1*1,1*2的方格填n*m的矩阵的方法数 [知识点] 状压dfs+矩阵快速幂 [分析 ...

  3. [ZJOI2015] 地震后的幻想乡(状压dp + 期望)

    problem luogu-P3343 solution dp(i):dp(i):dp(i): 当恰好加入第 iii 小边时候,所有点联通的方案数. 则 ans=∑idpi(mi)im+1ans=\s ...

  4. jzoj2941-贿赂【数学期望,dfs】

    正题 题目大意 nnn个人,有投票几率aia_iai​和级别bib_ibi​,kkk个糖,每个可以让一个官员增加0.10.10.1的投票几率. 然后如果有超过一半的人投你,你就可以成功. 不然成功概率 ...

  5. CF1556F-Sports Betting【状压dp,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1556F 题目大意 nnn个点的一张竞赛图,每个点有一个权值aia_iai​,(i,j)(i,j)(i,j)之间 ...

  6. P4321-随机漫游【状压dp,数学期望,高斯消元】

    正题 题目链接:https://www.luogu.com.cn/problem/P4321 题目大意 给出nnn个点mmm条边的一张无向图,qqq次询问. 每次询问给出一个点集和一个起点,求从起点出 ...

  7. 2021 ccpc 哈尔滨 G. Damaged Bicycle 状压 + 期望dp

    文章目录 题意: 思路: 传送门 题意: 你需要从111走到nnn,初始速度是ttt,某些地方有自行车,每个位置自行车有pip_ipi​的概率是坏掉的,如果自行车没坏可以骑上自行车,速度是rrr,可以 ...

  8. [选拔赛2 NOIP2018雅礼集训 Day3 u,v,w]玩个三角形(二维差分),玩个球(状压DP+map),玩个树(树上DP)

    文章目录 T1:玩个三角形 title solution code T2:玩个球 title solution code T3:玩个树 title solution code T1:玩个三角形 tit ...

  9. UVA 11600 Masud Rana(期望+状压DP)

    题意:n个城市,城市间两两有一条道路,m条道路是没有怪物的,每天随机选一个城市(除了本身),走过去,消灭途中的怪物,如果消灭完后,所有城市都可以不通过有怪物的道路到达就结束,问平均需要的天数. 分析: ...

最新文章

  1. sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率
  2. python图像插值
  3. thinkphp模版调用函数方法
  4. LightCounting预测以太网光模块市场未来5年18%增速
  5. Spring boot集成spring-boot-starter-data-jpa环境搭建
  6. mysql 列级权限授予用户_mysql 用户及权限管理 小结
  7. 一个页面从输入URL到加载显示完成,发生了什么?
  8. C++---汉明距离
  9. php如何提高程序运行效率,如何提高PHP的运行效率 | 萧小寒
  10. sql视图能使用触发器吗_冰箱买回家能立即使用吗 冰箱买回家要放多久能使用【详解】...
  11. 给 QtCtreator 工程文件 pro 配置 pthread库和liburcu库
  12. CentOS5.2下安装yum
  13. 韩立刚《计算机网络》| 第6章 应用层
  14. GEE基本概念(二)——3. filtermapreducer
  15. PPT转word可以使用什么软件
  16. 图片超过200kb怎么变小?怎么把图片压缩到想要的大小?
  17. windows10系统更新后,Windows.old 无法删除解决方法
  18. MyEclipse2019 4破解
  19. 机器人专业需要学习那些理论知识
  20. 【初识数据结构】c语言实现动态顺序表(已配图)

热门文章

  1. html下拉菜单的子目录,html - 带有下拉菜单的子菜单的垂直下拉菜单 - 堆栈内存溢出...
  2. mockmvc get请求 tm的 一直404_大家快来看看404的兄弟姐妹
  3. leetcode718. 最长重复子数组
  4. leetcode509. 斐波那契数
  5. vector容器中清空元素(但原来的元素还在)
  6. [mybatis]动态sql_foreach_遍历集合批量插入
  7. [蓝桥杯2018初赛]日志统计-双指针
  8. php+换行+php+eol,PHP PHP_EOL 换行符
  9. mysql查询语句能否让一个字段不显示出来_天天写order by,你知道Mysql底层如何执行吗?
  10. B. Alyona and a tree(dsu on tree + bit)