首页 技术 正文
技术 2022年11月21日
0 收藏 862 点赞 3,297 浏览 1254 个字

题面

Bzoj

Sol

首先从大向小,能关就关显然是最优

然后

设\(f[i]\)表示剩下最优要按i个开关的期望步数,倒推过来就是

\[f[i]=f[i-1]*i*inv[n]+f[i+1]*(n-i)*inv[n]+1
\]

\(inv\)表示逆元

设\(g[i]=f[i]-f[i-1]\)

那么上式变为

\[\sum_{j=1}^{i}g[i]=\sum_{j=1}^{i-1}g[i] *i*inv[n]+\sum_{j=1}^{i+1}g[i]*(n-i)*inv[n]+1
\]

化简

\[g[i]=(g[i]+g[i+1])*(n-i)*inv[n]+1\\
g[i]=((n-i)*g[i+1]+n)*inv[i]\\
\]

边界\(g[n+1]=0\)

最后就记个前缀和就好了

# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int _(1e5 + 5);
const int Zsy(100003);IL ll Input(){
RG ll x = 0, z = 1; RG char c = getchar();
for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
return x * z;
}int n, k, step, facn = 1, inv[_], f[_], ans;
bool sta[_], nxt[_];IL void Up(RG int &x, RG int y){
x += y;
if(x >= Zsy) x -= Zsy;
}int main(RG int argc, RG char* argv[]){
n = Input(); k = Input();
for(RG int i = 1; i <= n; ++i) facn = 1LL * facn * i % Zsy, sta[i] = Input();
for(RG int i = n; i; --i){
RG bool g = sta[i];
for(RG int j = i + i; j <= n; j += i) g ^= nxt[j];
if(g) nxt[i] = 1, ++step;
}
if(step <= k) return printf("%lld\n", 1LL * facn * step % Zsy), 0;
inv[1] = 1;
for(RG int i = 2; i <= n; ++i) inv[i] = (-1LL * (Zsy / i) * inv[Zsy % i] % Zsy + Zsy) % Zsy;
for(RG int i = 1; i <= k; ++i) f[i] = 1;
for(RG int i = n; i > k; --i) f[i] = 1LL * inv[i] * (1LL * (n - i) * f[i + 1] % Zsy + n) % Zsy;
for(RG int i = 1; i <= step; ++i) Up(ans, f[i]);
printf("%lld\n", 1LL * facn * ans % Zsy);
return 0;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,992
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,506
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,349
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,134
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,767
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,844