当前位置: 首页 > news >正文

Bzoj4872: [Shoi2017]分手是祝愿

题面

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;
}

转载于:https://www.cnblogs.com/cjoieryl/p/8426049.html

相关文章:

  • android开发 获取logcat日志并记录(方便离线调试)
  • 微服务概述之架构演变
  • 数据分区------《Designing Data-Intensive Applications》读书笔记9
  • MySQL数据库锁定机制
  • mybatis架构分析
  • SQL必知必会笔记
  • 栈------表达式求值
  • UFPS入门: Unity FPS 教程
  • .NET Core 2.1路线图
  • 进程状态
  • linux运维面试精选
  • 链栈的实现
  • mysql字符集乱码
  • JavaWeb项目架构之NFS文件服务器
  • 应该怎么开始学习? study is a journey!
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【RocksDB】TransactionDB源码分析
  • Apache的80端口被占用以及访问时报错403
  • jquery cookie
  • php的插入排序,通过双层for循环
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • sessionStorage和localStorage
  • Vue实战(四)登录/注册页的实现
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 工作中总结前端开发流程--vue项目
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 回流、重绘及其优化
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端js -- this指向总结。
  • 前嗅ForeSpider采集配置界面介绍
  • 算法-插入排序
  • 听说你叫Java(二)–Servlet请求
  • 微信公众号开发小记——5.python微信红包
  • 我有几个粽子,和一个故事
  • 小程序button引导用户授权
  • ionic入门之数据绑定显示-1
  • mysql面试题分组并合并列
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #QT(串口助手-界面)
  • (3)选择元素——(17)练习(Exercises)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (ros//EnvironmentVariables)ros环境变量
  • (第一天)包装对象、作用域、创建对象
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • ****Linux下Mysql的安装和配置
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core webapi 大文件上传到wwwroot文件夹