传送门

\(\color{green}{solution}\)

它每次感染的人是它的倍数,那么我们只需要找出那些除了自己以外在\(l\), \(r\)内没有别的数是
它的约数的数,在这里称其为关键数.
(比如区间是[3,7],那么这些数分别是\(3\),\(4\),\(5\),\(7\).因为\(6\)是\(3\)的倍数,所以不是).
我们记这些数的数量为\(sum\).那么设\(f_i\)为在第\(i\)时刻将说有人感染完的方案数.
那么换句话来说,就是最后一个关键数在第\(i\)时刻被感染.
那么\(f_i\) = \(sum\) \(\times (_{n-i}^{n-sum}) \times(i - 1)! \times(n-i)!\).所以最后\(ans = \sum_{i=sum}^{n} i \times f_i\)

BZOJ的垃圾评测机+卡常真的让人难受

#include <bits/stdc++.h>
using namespace std;

const int mod = 1e9 + 7, maxn = 1e7 + 10;

int fac[maxn], ifac[maxn], l, r;

int C(int n, int m) {
    if( n < m) return 0;
    return 1LL * fac[n] * ifac[m] % mod * ifac[n-m] % mod;
}

int _pow(int x, int n) {
    int ret = 1;
    for ( ; n; n >>= 1, x = 1LL * x * x % mod)
        if( n & 1) ret = 1LL * ret * x % mod;
    return ret;
}

bool book[maxn];
int pri[maxn], ipri[maxn], cnt;

int sum, ans, n;

int main() {
    scanf("%d%d", &l, &r);
    fac[0] = 1;
    for ( register int i = 1; i <= r; ++ i) {
        fac[i] = 1LL * fac[i-1] * i % mod;
    }
    ifac[r] = _pow(fac[r], mod-2);
    for ( register int i = r-1; ~i; -- i) {
        ifac[i] = 1LL * ifac[i+1] * (i + 1) % mod;
    }
    if( l == 1) {
        ans = 1LL * fac[r] * (r + 1) % mod * ifac[2] % mod;
        printf("%d\n", ans); return 0;
    }
//  for ( register int i = l; i <= r; ++ i) if( !book[i]) {
//      ++ sum;
//      for ( register int k = i; k <= r; k += i) book[k] = 1;
//  }
    for ( register int i = 2; i <= r; ++ i) {
        if( !book[i]) pri[++ cnt] = i, ipri[i] = 1;
        for ( register int k = 1; k <= cnt; ++ k) {
            if( 1LL * pri[k] * i > r) break;
            ipri[i * pri[k]] = i; book[i*pri[k]] = 1;
            if( i % pri[k] == 0) break;
        }
    }
    for ( register int i = l; i <= r; ++ i) {
        if( ipri[i] < l) ++ sum;
    }
    n = r - l + 1;
    for ( register int i = sum; i <= n; ++ i) {
        ans = (ans + 1LL * i * sum % mod * C(n - sum, n - i) % mod * fac[n - i] % mod * fac[i - 1] % mod) % mod;
    }
    printf("%d\n", ans);
    return 0;
}

吐槽:
九条可怜 + 组合数学 = 瞬间爆炸.还有为什么可以二次感染,度错题写了半天QAQ;


[BZOJ 5323][Jxoi2018]游戏的更多相关文章

  1. 【BZOJ5323】[JXOI2018]游戏(组合计数,线性筛)

    [BZOJ5323][JXOI2018]游戏(组合计数,线性筛) 题面 BZOJ 洛谷 题解 显然要考虑的位置只有那些在\([l,r]\)中不存在任意一个约数的数. 假设这样的数有\(x\)个,那么剩 ...

  2. [JXOI2018]游戏 (线性筛,数论)

    [JXOI2018]游戏 \(solution:\) 这一道题的原版题面实在太负能量了,所以用了修改版题面. 这道题只要仔细读题,我们就可以将题目的一些基本性质分析出来:首先我们定义:对于某一类都可以 ...

  3. 【题解】JXOI2018游戏(组合数)

    [题解]JXOI2018游戏(组合数) 题目大意 对于\([l,r]\)中的数,你有一种操作,就是删除一个数及其所有倍数.问你删除所有数的所有方案的步数之和. 由于这里是简化题意,有一个东西没有提到: ...

  4. [BZOJ]1059 矩阵游戏(ZJOI2007)

    虽然说是一道水题,但小C觉得还是挺有意思的,所以在这里mark一下. Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白 ...

  5. bzoj 3875 骑士游戏 - spfa - 动态规划

    Description  [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,J ...

  6. BZOJ5323 & 洛谷4562:[JXOI2018]游戏——题解

    https://www.luogu.org/problemnew/show/P4562 https://www.lydsy.com/JudgeOnline/problem.php?id=5323 (B ...

  7. BZOJ 1854: [Scoi2010]游戏 无向图判环

    题目链接: 题目 1854: [Scoi2010]游戏 Time Limit: 5 Sec Memory Limit: 162 MB 问题描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装 ...

  8. bzoj 1455: 罗马游戏 左偏树+并查集

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 668  Solved: 247[Submit][Status] Descriptio ...

  9. [BZOJ 1025] [SCOI2009] 游戏 【DP】

    题目链接:BZOJ - 1025 题目分析 显然的是,题目所要求的是所有置换的每个循环节长度最小公倍数的可能的种类数. 一个置换,可以看成是一个有向图,每个点的出度和入度都是1,这样整个图就是由若干个 ...

随机推荐

  1. 《剑指offer》读书笔记

    二叉树 重建二叉树 面试题6:(p55) 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1, 2, 4 ...

  2. Python服务器开发 -- 网络基础-乾颐堂

    网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. HTTP是高层协议,而TCP/IP是个协议集,包过许多的子协议.包括:传输层的 FTP,UDP,TCP协议等,网络层的ip ...

  3. 【美食技术】家庭自制DIY鸡蛋饼和疙瘩汤早餐视频教程

    鸡蛋饼制作方法 食材准备面粉 150g鸡蛋饼  鸡蛋饼鸡蛋 2个盐 适量水 适量(约300ml)油 20g荵花适量也可根据自己喜好准备一些调味料. 做法 鸡蛋饼是一种家常点心,做法很多,这里提供3种. ...

  4. CentOS 7.4 shell 不显示当前用户和路径的问题

    步骤如下:   vim ~/.bash_profile (不用管.bash_profile这个文件有几个,自己新建一个也是可以的)    在最后加上 export PS1='[\u@\h \W]\$' ...

  5. [翻译] FastReport Class Hierarchy (FastReport 组件类层次结构)

    "TfrxComponent" is the base class for all FastReport components. Objects of this type have ...

  6. 微信小程序web-view之动态加载html页面

    官方推出的web-view方便了很多开发人员. 我们在做的时候,经常会想到写一个小程序的page然后通过动态加载web-view的形式来完成其他功能页面的开发. 之前研究web-view的时候发现网上 ...

  7. [C#学习笔记]Func委托与Action委托

    学习一项新知识的时候,最好的方法就是去实践它. 前言 <CLR via C#>这本神书真的是太有意思了!好的我的前言就是这个. Fun 如果要用有输入参数,有返回值的委托,那么Func委托 ...

  8. PDF文档转换为图片、图片转成PDF 及PDF合并

    简介 功能:PDF文档按每页转换成一张图片,一张图片转换成一张PDF 并将多张PDF合成一个多页的PDF文档. 经历:在各个网站上搜索始终出现各种问题,尤其是遇到引用的版本问题尤其头疼,不是不能适用当 ...

  9. 日笔记--C# 从数据库取表格到DataGridView---json传输

    只作为个人学习笔记. class OpData { // 创建一个和客户端通信的套接字 Socket socketwatch = null; //连接Access字符串 string strCon; ...

  10. Solr(一) 安装部署环境

    Solr运行环境 第一步:安装java jdk 第二步:安装tomcat服务器 安装过程:参考http://jingyan.baidu.com/article/870c6fc33e62bcb03fe4 ...