【BZOJ4872】分手是祝愿(动态规划,数学期望)
【BZOJ4872】分手是祝愿(动态规划,数学期望)
题面
题解
对于一个状态,如何求解当前的最短步数?
从大到小枚举,每次把最大的没有关掉的灯关掉
暴力枚举因数关就好
假设我们知道了当前至少要关\(tot\)次
如果一个灯被动两次以上是没有任何意义的
所以,相当于,要动的灯只有\(tot\)个
其他的是没有任何意义的
所以,题面可以变为:
现在有\(tot\)个\(1\),\(n-tot\)个\(0\)
每次随机选择一个数将其异或\(1\)
求最终变为\(0\)的期望
我们现在考虑一下
设\(f[x]\)为剩下\(x\)个\(1\)的期望
并且我们知道了所有的值,
那么,我们不难推出:
\]
也就是
\]
同时,我们有边界:
\(f[x]=x(x\leq K)\)
\(f[n]=f[n-1]+1\)
如果考虑把\(f[n]\)带入到\(f[n-1]\)的式子中
我们可以得到只有\(f[n-1],f[n-2]\)之间的关系式
如此递推下去就可以推出\(f[K+1]\)和\(f[K]\)的关系式
这样就是常数项了
回朔带回去就可以求解
时间复杂度\(O(nlogn)\)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define ll long long
#define RG register
#define MAX 120000
#define MOD 100003
inline int read()
{
RG int x=0,t=1;RG char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
int fpow(int a,int b)
{
int s=1;
while(b){if(b&1)s=1ll*s*a%MOD;a=1ll*a*a%MOD;b>>=1;}
return s;
}
int tot,n,K;
int a[MAX],ans[MAX];
int inv[MAX];
int DFS(int x,int ss)
{
if(x<=K)return ans[x]=x;
ss=(1ll*n*inv[x]%MOD+1ll*ss*(n-x)%MOD*inv[x]%MOD)%MOD;
return ans[x]=(DFS(x-1,ss)+ss)%MOD;
}
int main()
{
n=read();K=read();
for(int i=1;i<=n;++i)a[i]=read();
for(int i=n;i;--i)
if(a[i])
{
for(int j=1;j*j<=i;++j)
if(i%j==0)
{
a[j]^=1;
if(j*j!=i)a[i/j]^=1;
}
++tot;
}
if(tot<=K)
{
for(int i=1;i<=n;++i)tot=1ll*tot*i%MOD;
printf("%d\n",tot);
return 0;
}
for(int i=1;i<=n;++i)inv[i]=fpow(i,MOD-2);
DFS(n,1);
for(int i=1;i<=n;++i)ans[tot]=1ll*ans[tot]*i%MOD;
printf("%d\n",ans[tot]);
return 0;
}
【BZOJ4872】分手是祝愿(动态规划,数学期望)的更多相关文章
- BZOJ4872: [Shoi2017]分手是祝愿【概率期望DP】【思维好题】
Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n 个灯和 n 个开关组成,给定这 n 个灯的初始状态 ...
- [bzoj4872]分手是祝愿
Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n 个灯和 n 个开关组成,给定这 n 个灯的初始状态 ...
- Codeforces 839C Journey - 树形动态规划 - 数学期望
There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can r ...
- 【BZOJ4872】[Shoi2017]分手是祝愿 数学+期望DP
[BZOJ4872][Shoi2017]分手是祝愿 Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n ...
- [BZOJ4872][六省联考2017]分手是祝愿(期望DP)
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 516 Solved: 342[Submit][Statu ...
- bzoj 4872: [Shoi2017]分手是祝愿 [期望DP]
4872: [Shoi2017]分手是祝愿 题意:n个灯开关游戏,按i后i的约数都改变状态.随机选择一个灯,如果当前最优策略\(\le k\)直接用最优策略.问期望步数\(\cdot n! \mod ...
- 【BZOJ2134】单位错选(数学期望,动态规划)
[BZOJ2134]单位错选(数学期望,动态规划) 题面 BZOJ 题解 单独考虑相邻的两道题目的概率就好了 没了呀.. #include<iostream> #include<cs ...
- 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
[BZOJ1415][NOI2005]聪聪和可可(动态规划,数学期望) 题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include< ...
- 【Luogu1291】百事世界杯之旅(动态规划,数学期望)
[Luogu1291]百事世界杯之旅(动态规划,数学期望) 题面 洛谷 题解 设\(f[i]\)表示已经集齐了\(i\)个名字的期望 现在有两种方法: 先说我自己的: \[f[i]=f[i-1]+1+ ...
随机推荐
- Python 脚本实现对 Linux 服务器的监控
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 原文地址 由于原文来自微信公众号,并且脚本都是图片,所以这里 ...
- 利用Jsonp实现跨域请求,spring MVC+JQuery
1 什么是Jsonp? JSONP(JSON with Padding)是数据格式JSON的一种"使用模式",可以让网页从别的网域要数据.另一个解决这个问题的新方法是跨来源资源共享 ...
- Egret学习笔记 (Egret打飞机-8.敌机和主角飞机发射子弹)
经过前面几章的准备,我们差不多已经具备了一个基本的框架,这一章我们就开始添砖加瓦了. 敌机定时发射一个子弹,子弹的方向是从上到下,但是发射子弹的代码应该放在哪儿呢? 从面向对象编程的思想来说,子弹是敌 ...
- #pragma预处理命令
#pragma comment(lib,"XXX.lib") 表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样. #pragma comment(linke ...
- uva225 回溯剪枝
这道题要剪枝,不然会超时,还有就是每次参加过的城市下次不能再参观,不然会WA. 对于障碍物的坐标我用了两种方法,第一种就是直接用STL里面的set,对于判断是否访问过直接用的count,用时960ms ...
- nginx80端口被占用,启动失败。
mac自带的apache占用了80端口,导致nginx服务器不能启动.这个问题是怎么解决的,目前还是不清楚. apache占用端口,使用命令进行关闭: apachectl -k stop,然后重启 ...
- ActiveMq笔记3-AMQ高可用性理论
单点的ActiveMQ作为企业应用无法满足高可用和集群的需求,所以ActiveMQ提供了master-slave.broker cluster等多种部署方式,但通过分析多种部署方式之后我认为需要将两种 ...
- Hadoop分布式集群配置
硬件环境: 安装一个Hadoop集群时,需要专门指定一个服务器作为主节点. 三台虚拟机搭建的集群:(搭建集群时主机名不能一样,主机名在/etc/hostname修改) master机器:集群的主节点, ...
- 对ios、android开发程序员的14条忠告
————————本文摘自千锋教育(http://www.mobiletrain.org/)对ios\android开发程序员的14条忠告————————— 1.不要害怕在工作中学习. 只要有电脑,就可 ...
- JavaScript函数的柯里化(currying)
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/currying.html 什么是js函数的currying /柯里化? 说到js的柯里化,相信很多朋友都会头大.或 ...