BZOJ

Luogu

sol

首先发现肯定有解,又因为每个位置至多操作一次,所以最优解一定是在\([0,n]\)之间

有一种可以在\(O(\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor)\)复杂度求最优解的方法。

只要枚举这个数的倍数判断被操作了几次就行了。

如果最优步数小于等于k直接输出最优步数\(*n!\)

否则,我们设\(f_i\)表示当前最优步数是\(i\)时的期望完成步数

考虑到这时所有位置已经没有区别了(只有需要操作的和不需要操作的两种,没有顺序区别),所以这个状态是成立的

那么

\[f_i=\frac{i}{n}f_{i-1}+\frac{n-i}{n}f_{i+1}+1
\]

方程显然有解,然而直接高斯消元\(O(n^3)\)?

考虑把\(f_i\)差分,记为\(g_i\),那么上式就变成了

\[\sum_{x=1}^{i}g_x=\frac{i}{n}\sum_{x=1}^{i-1}g_x+\frac{n-i}{n}\sum_{x=1}^{i+1}g_x+1
\]

化简

\[g_i=\frac{n-i}{n}(g_i+g_{i+1})+1
\]

so

\[g_i=\frac{(n-i)g_{i+1}+n}{i}
\]

逆元线性推得

code

#include<cstdio>
#include<algorithm>
using namespace std;
const int mod = 100003;
int gi()
{
int x=0,w=1;char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if (ch=='-') w=0,ch=getchar();
while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return w?x:-x;
}
int n,jc=1,k,a[mod],opt[mod],best,inv[mod],f[mod],ans;
int main()
{
n=gi();k=gi();
for (int i=1;i<=n;++i) a[i]=gi(),jc=1ll*jc*i%mod;
for (int i=n;i;--i)
{
int p=a[i];
for (int j=i+i;j<=n;j+=i) p^=opt[j];
if (p) opt[i]=1,++best;
}
if (best<=k) return printf("%lld\n",1ll*best*jc%mod),0;
inv[1]=f[n]=1;
for (int i=2;i<=n;++i) inv[i]=(mod-1ll*(mod/i)*inv[mod%i]%mod)%mod;
for (int i=n-1;i>k;--i) f[i]=(1ll*(n-i)*f[i+1]%mod+n)%mod*inv[i]%mod;
for (int i=1;i<=best;i++) ans+=i<=k?1:f[i];
return printf("%lld\n",1ll*ans*jc%mod),0;
}

[BZOJ4872][六省联考2017]分手是祝愿的更多相关文章

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

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

  2. bzoj千题计划266:bzoj4872: [六省联考2017]分手是祝愿

    http://www.lydsy.com/JudgeOnline/problem.php?id=4872 一种最优解是 从大到小灯有亮的就灭掉 最优解是唯一的,且关灯的顺序没有影响 最优解 对每个开关 ...

  3. BZOJ4872 [六省联考2017]分手是祝愿 【期望dp】

    题目 Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n 个灯和 n 个开关组成,给定这 n 个灯的初始状态,下标为 从 1 ...

  4. BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description ...

  5. [bzoj4872] [洛谷P3750] [六省联考2017] 分手是祝愿

    Description Zeit und Raum trennen dich und mich. 时空将你我分开. \(B\) 君在玩一个游戏,这个游戏由 \(n\) 个灯和 \(n\) 个开关组成, ...

  6. luoguP3750 [六省联考2017]分手是祝愿 概率期望DP + 贪心

    ...........真的神状态了,没办法去想的状态................... 考试的时候选择$50$分贪心+$15$分状压吧,别的点就放弃算了........ 令$f[i]$表示从最小步 ...

  7. [六省联考2017]分手是祝愿 期望DP

    表示每次看见期望的题就很懵逼... 但是这题感觉还是值得一做,有可借鉴之处 要是下面这段文字格式不一样的话(虽然好像的确不一样,我也不知道为什么,是直接从代码里面复制出来的,因为我一般都是习惯在代码里 ...

  8. P3750 [六省联考2017]分手是祝愿 期望DP

    \(\color{#0066ff}{ 题目描述 }\) Zeit und Raum trennen dich und mich. 时空将你我分开. B 君在玩一个游戏,这个游戏由 \(n\) 个灯和 ...

  9. 洛谷P3750 [六省联考2017]分手是祝愿(期望dp)

    传送门 嗯……概率期望这东西太神了…… 先考虑一下最佳方案,肯定是从大到小亮的就灭(这个仔细想一想应该就能发现) 那么直接一遍枚举就能$O(nlogn)$把这个东西给搞出来 然后考虑期望dp,设$f[ ...

随机推荐

  1. jQuery smartMenu右键自定义上下文菜单插件

    http://www.zhangxinxu.com/wordpress/?p=1667 <%@ page contentType="text/html; charset=UTF-8&q ...

  2. 【转】Nginx配置详解

    转自:http://www.cnblogs.com/knowledgesea/p/5175711.html Nginx常用功能 1. Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反 ...

  3. iOS UIFont 字体名字大全

    Font Family: American TypewriterFont: AmericanTypewriterFont: AmericanTypewriter-Bold Font Family: A ...

  4. mac给文件批量添加后缀名

    for i in *;do mv "$i" "$i.mp4";done

  5. CentOS7中关闭firewall,并使用iptables管理防火墙

    背景描述 在使用Docker时,启用centos7默认的firewall,启动端口映射时,防火墙规则不生效.docker默认使用了iptables防火墙机制.所以需要关闭firewall使用iptab ...

  6. 原码,反码,补码 与(&) 或(|) 非(~) 异或(^) 左移 << 右移 >> 无符号右移 >>>

    原码 数字在计算机中以二进制表示,8位的字长,最高位是符号位, 正数为0,负数为1.比如,3为0000 0011: -3为1000 0011. 注意,Java中int为32位.3的16进制表示为3,- ...

  7. java1环境与简介

    java1环境与简介   Ⅰ 个人简介 陈鹏 联系方式:15828682774 2012 年至今,从事软件开发 5 年. 1 年新加坡海外工作经历. 先后在民企.外企.创业公司做过开发. 熟悉 JAV ...

  8. 剑指offer第六天

    29.最小的K个数 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 解法一: Partition思想 允许改变原始数组的情况, ...

  9. SharedPreferences封装类

    最近一直在读马伟奇老师的简书,给人以不一样的感觉,接下来的时间会做做笔记,毕竟好东西变成自己的才有用 原文地址SharedPreferencesUtils 依赖 dependencies { comp ...

  10. hihoCoder 1015 KMP算法

    题意:经典字符串匹配算法.给定原串和模式串,求模式串在原串中出现的次数.算法讲解 AC代码 #include <cstdio> #include <cmath> #includ ...