经分析可知:I.操作每个灯可看做一种异或状态 II.每个状态可看做是一些异或状态的异或和,而且每个异或状态只能由它本身释放或放入 III.每一种异或状态只有存在不存在两中可行状态,因此这些灯只有同时处于不存在才可以,而两种异或状态之间没有关系因此可以把这些状态看做一样的,因此counts的是异或状态数。

到这里为止我们可以得到一个简单的转移方程 f[i]=i/n*f[i-1]+(n-i)/i*f[i+1]+1 于是看起来似乎已经到了解决问题的时候,所以我就开始推.......然后就没有然后了,由这个式子出发的扔锅,永远没头.....

.最后知道正解是差分的我大概......我们可以这样想,从每个f[i]出发到达最后他一定是先从自己出发再到每个可能第一次到达i-1,在每个可能第一次到达i-2....而我们发现对于一个i到达i-1的期望次数是一定的因此我们可以从此入手 得到 g[i]=i/n+(n-i)/n(g[i+1]+g[i]+1) 这样我们就能用一个二阶递推来AC了

(*@ο@*) 哇~ 神™差分,让我推一年我也推不出来.......

#include<cstdio>
#include<iostream>
#define MAXN 100100
using namespace std;
typedef long long LL;
const LL P=;
LL jie[MAXN],g[MAXN],f[MAXN],n,k;
int now[MAXN];
inline LL ni(LL x)
{
LL y=P-,ans=;;
while(y)
{
if(y&)ans=ans*x%P;
y>>=;
x=x*x%P;
}
return ans;
}
int main()
{
scanf("%lld%lld",&n,&k);
jie[]=;
for(LL i=;i<=n;i++)
jie[i]=jie[i-]*i%P;
for(LL i=;i<=k;i++)
g[i]=jie[n];
g[]=;
g[n]=jie[n];
for(LL i=n-;i>k;i--)
g[i]=((n-i)*g[i+]%P+n*jie[n]%P)%P*ni(i)%P;
for(int i=;i<=n;i++)
scanf("%d",&now[i]);
LL aim=;
for(int i=n;i>;i--)
if(now[i])
{
aim++;
int j=;
for(;j*j<i;j++)
if(i%j==)
now[j]^=,now[i/j]^=;
if(j*j==i)
now[j]^=;
}
LL ans=;
for(int i=;i<=aim;i++)
ans+=g[i];
ans%=P;
printf("%lld",ans);
return ;
}

[HEOI2017]分手是祝愿 期望概率dp 差分的更多相关文章

  1. BZOJ_4872_[Shoi2017]分手是祝愿_概率与期望

    BZOJ_4872_[Shoi2017]分手是祝愿_概率与期望 Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这 ...

  2. HDU 3853 期望概率DP

    期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每一个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] ,  右移:[x][y ...

  3. 【BZOJ 3652】大新闻 数位dp+期望概率dp

    并不难,只是和期望概率dp结合了一下.稍作推断就可以发现加密与不加密是两个互相独立的问题,这个时候我们分开算就好了.对于加密,我们按位统计和就好了;对于不加密,我们先假设所有数都找到了他能找到的最好的 ...

  4. 【BZOJ 3811】玛里苟斯 大力观察+期望概率dp+线性基

    大力观察:I.从输出精准位数的约束来观察,一定会有猫腻,然后仔细想一想,就会发现输出的时候小数点后面不是.5就是没有 II.从最后答案小于2^63可以看出当k大于等于3的时候就可以直接搜索了 期望概率 ...

  5. 【NOIP模拟赛】黑红树 期望概率dp

    这是一道比较水的期望概率dp但是考场想歪了.......我们可以发现奇数一定是不能掉下来的,因为若奇数掉下来那么上一次偶数一定不会好好待着,那么我们考虑,一个点掉下来一定是有h/2-1个红(黑),h/ ...

  6. BZOJ1415: [Noi2005]聪聪和可可 最短路 期望概率dp

    首先这道题让我回忆了一下最短路算法,所以我在此做一个总结: 带权: Floyed:O(n3) SPFA:O(n+m),这是平均复杂度实际上为O(玄学) Dijkstra:O(n+2m),堆优化以后 因 ...

  7. 期望概率DP

    期望概率DP 1419: Red is good ​ Description ​ 桌面上有\(R\)张红牌和\(B\)张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 ...

  8. bzoj 4872: [Shoi2017]分手是祝愿 [期望DP]

    4872: [Shoi2017]分手是祝愿 题意:n个灯开关游戏,按i后i的约数都改变状态.随机选择一个灯,如果当前最优策略\(\le k\)直接用最优策略.问期望步数\(\cdot n! \mod ...

  9. [BZOJ4872][六省联考2017]分手是祝愿(期望DP)

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 516  Solved: 342[Submit][Statu ...

随机推荐

  1. HDSF读写文件

    HDFS 读取文件 HDFS的文件读取原理,主要包括以下几个步骤: 1.首先调用FileSystem对象的open方法,其实获取的是一个DistributedFileSystem的   实例. 2.D ...

  2. 国内maven库链接地址,链接阿里的库,下载很快!!!

    <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http:/ ...

  3. python2.7入门---模块(Module)

        来,这次我们就看下Python 模块(Module).它是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句.模块让你能够有逻辑地组织你的 Pytho ...

  4. Tomcat配置SSL连接

    1.服务器端单项认证 在Tomcat的server.xml文件中,已经提供了现成的配置SSL连接器的代码,只要把<Connector>元素的注释去掉即可: <!—  Define a ...

  5. java基础 -- Collections.sort的两种用法

    /** * @author * @version * 类说明 */ package com.jabberchina.test; import java.util.ArrayList; import j ...

  6. XenServer设置master,摧毁故障主机

    XenServer pool 移除server 设置master 这分为Pool Master是正常还是异常2种情况: 正常情况下可能要对Pool Master做一些停机维护,比如换内存条啥的,此时在 ...

  7. AV Foundation 实现文字转语音

    AV Foundation 主要框架 CoreAudio 音频处理框架 扩展学习:<Learning CoreAudio> CoreVideo 视频处理的管道模式,逐帧访问 CoreMed ...

  8. 今天买了个pro,开始ios开发

    今天买了个mac pro 开始ios开发啦,爽!

  9. 数据库学习(三) sql语句中添加函数 to_char,round,连接符||

    ** to char 是把日期或数字转换为字符串  to date 是把字符串转换为数据库中得日期类型  参考资料:https://www.cnblogs.com/hllnj2008/p/533296 ...

  10. 使用CodeBlocks编译64位程序(用的编译器仅仅是windows sdk的)

    需求: -CodeBlocks使用nightly版本: -Windows SDK(我使用的是6.0A,即微软针对vista的,因为这个比较小,你也可以选择其他版本但是要有64位编译器.他也适用于xps ...