nssl1468-V【状压,数学期望,dfs】
正题
题目大意
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=1lmax{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】相关推荐
- 有趣的题目:简单深搜之数独与靶型数独--二进制状压加速与dfs数独剪枝
Sudoku Time Limit: 2000MS Memory Limit: 65536K 题目链接http://poj.org/problem?id=2676 Description Sudo ...
- 【Codeforces Gym - 101635C Macarons 】【矩阵快速幂+状压】【dfs时间换空间】
[链接] http://codeforces.com/gym/101635/attachments [题意] 求用1*1,1*2的方格填n*m的矩阵的方法数 [知识点] 状压dfs+矩阵快速幂 [分析 ...
- [ZJOI2015] 地震后的幻想乡(状压dp + 期望)
problem luogu-P3343 solution dp(i):dp(i):dp(i): 当恰好加入第 iii 小边时候,所有点联通的方案数. 则 ans=∑idpi(mi)im+1ans=\s ...
- jzoj2941-贿赂【数学期望,dfs】
正题 题目大意 nnn个人,有投票几率aia_iai和级别bib_ibi,kkk个糖,每个可以让一个官员增加0.10.10.1的投票几率. 然后如果有超过一半的人投你,你就可以成功. 不然成功概率 ...
- CF1556F-Sports Betting【状压dp,数学期望】
正题 题目链接:https://www.luogu.com.cn/problem/CF1556F 题目大意 nnn个点的一张竞赛图,每个点有一个权值aia_iai,(i,j)(i,j)(i,j)之间 ...
- P4321-随机漫游【状压dp,数学期望,高斯消元】
正题 题目链接:https://www.luogu.com.cn/problem/P4321 题目大意 给出nnn个点mmm条边的一张无向图,qqq次询问. 每次询问给出一个点集和一个起点,求从起点出 ...
- 2021 ccpc 哈尔滨 G. Damaged Bicycle 状压 + 期望dp
文章目录 题意: 思路: 传送门 题意: 你需要从111走到nnn,初始速度是ttt,某些地方有自行车,每个位置自行车有pip_ipi的概率是坏掉的,如果自行车没坏可以骑上自行车,速度是rrr,可以 ...
- [选拔赛2 NOIP2018雅礼集训 Day3 u,v,w]玩个三角形(二维差分),玩个球(状压DP+map),玩个树(树上DP)
文章目录 T1:玩个三角形 title solution code T2:玩个球 title solution code T3:玩个树 title solution code T1:玩个三角形 tit ...
- UVA 11600 Masud Rana(期望+状压DP)
题意:n个城市,城市间两两有一条道路,m条道路是没有怪物的,每天随机选一个城市(除了本身),走过去,消灭途中的怪物,如果消灭完后,所有城市都可以不通过有怪物的道路到达就结束,问平均需要的天数. 分析: ...
最新文章
- sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率
- python图像插值
- thinkphp模版调用函数方法
- LightCounting预测以太网光模块市场未来5年18%增速
- Spring boot集成spring-boot-starter-data-jpa环境搭建
- mysql 列级权限授予用户_mysql 用户及权限管理 小结
- 一个页面从输入URL到加载显示完成,发生了什么?
- C++---汉明距离
- php如何提高程序运行效率,如何提高PHP的运行效率 | 萧小寒
- sql视图能使用触发器吗_冰箱买回家能立即使用吗 冰箱买回家要放多久能使用【详解】...
- 给 QtCtreator 工程文件 pro 配置 pthread库和liburcu库
- CentOS5.2下安装yum
- 韩立刚《计算机网络》| 第6章 应用层
- GEE基本概念(二)——3. filtermapreducer
- PPT转word可以使用什么软件
- 图片超过200kb怎么变小?怎么把图片压缩到想要的大小?
- windows10系统更新后,Windows.old 无法删除解决方法
- MyEclipse2019 4破解
- 机器人专业需要学习那些理论知识
- 【初识数据结构】c语言实现动态顺序表(已配图)
热门文章
- html下拉菜单的子目录,html - 带有下拉菜单的子菜单的垂直下拉菜单 - 堆栈内存溢出...
- mockmvc get请求 tm的 一直404_大家快来看看404的兄弟姐妹
- leetcode718. 最长重复子数组
- leetcode509. 斐波那契数
- vector容器中清空元素(但原来的元素还在)
- [mybatis]动态sql_foreach_遍历集合批量插入
- [蓝桥杯2018初赛]日志统计-双指针
- php+换行+php+eol,PHP PHP_EOL 换行符
- mysql查询语句能否让一个字段不显示出来_天天写order by,你知道Mysql底层如何执行吗?
- B. Alyona and a tree(dsu on tree + bit)