BZOJ5323 JXOI2018 游戏】的更多相关文章

可以发现这个过程非常类似埃氏筛,将在该区间内没有约数的数定义为质数,那么也就是求每种方案中选完所有质数的最早时间之和. 于是先求出上述定义中的质数个数,线性筛即可.然后对每个最短时间求方案数,非常显然的组合数.最好特判一下l=1的情况,毕竟如果1作为质数会有奇怪的事. 我的线性筛……跑的几乎跟埃氏筛差不多慢. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #incl…
题目链接 BZOJ5323 题解 有一些数是不能被别的数筛掉的 这些数出现最晚的位置就是该排列的\(t(p)\) 所以我们只需找出所有这些数,线性筛一下即可,设有\(m\)个 然后枚举最后的位置 \[ans = \sum\limits_{i = m}^{n} m!(n - m)!{i - 1 \choose m - 1}i\] 复杂度\(O(n)\) #include<iostream> #include<cstdio> using namespace std; const int…
传送门 这是我见过的为数不多的良心九怜题之一. 题目大意 有一堆屋子,编号为$l,l+1...r-1,r$,你每次会走入一个没走入过的房子,然后这个房子以及编号为这个房子编号的倍数的房子就会被自动标记,对于每一种走入房子顺序的排列,对答案的贡献是最早使得所有房子都被标记的操作数,求所有排列对答案的贡献和.$1\leq l,r\leq 10^7$ 题解 设$n=r-l+1$不难发现,有意义的走入只有$m$次($m$表示$[l,r]$内没有因数$\in[l,r]$的数的数量). 每种排列对答案的贡献…
[BZOJ5323][JXOI2018]游戏(组合计数,线性筛) 题面 BZOJ 洛谷 题解 显然要考虑的位置只有那些在\([l,r]\)中不存在任意一个约数的数. 假设这样的数有\(x\)个,那么剩下的数有\(n-x\)个. 枚举时间\(t\),那么强制在\(t\)时刻放下\(x\)数中的最后一个, 那么这样子的方案数就是\(\displaystyle {t-1\choose x-1}*x!*(n-x)!\). 预处理阶乘和逆元就很好做了. #include<iostream> #inclu…
[JXOI2018]游戏 \(solution:\) 这一道题的原版题面实在太负能量了,所以用了修改版题面. 这道题只要仔细读题,我们就可以将题目的一些基本性质分析出来:首先我们定义:对于某一类都可以被x整除的数(要在\([l,r]\) 之内),若x也在我们的\([l,r]\) 之内且x不能被\([l,r]\) 内任意其它数整除,我们称这类数为关联数且x为特殊数,(显然:当九条可怜查了x这间办公室后,所有以x为特殊数的关联数都不需要再检查了!)(而且:这一类以x为特殊数的关联数,只有且只要当x被…
[题解]JXOI2018游戏(组合数) 题目大意 对于\([l,r]\)中的数,你有一种操作,就是删除一个数及其所有倍数.问你删除所有数的所有方案的步数之和. 由于这里是简化题意,有一个东西没有提到: 你可以"删除"已经被删除的点.而且即使你已经删掉了所有的数,若你仍然要继续操作直到做了\(r-l+1\)次不同的删除动作.这将计入方案. 可能还是没有讲清楚,可以去康康原题... 实际上我想写一下题解是因为一个思想的方法... 考虑将\([l,r]\)每一个数向他的倍数连边.这可以形成一…
传送门 不难发现,所有不能被其他数筛掉的数是一定要选的,只有选了这些数字才能结束 假设有 \(m\) 个,枚举结束时间 \(x\),答案就是 \(\sum \binom{x-1}{m-1}m!(n-m)!x\) 埃氏筛法即可求出 \(m\) # include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn(1e7 + 5); const int mod(1e9 + 7); inline voi…
https://www.luogu.org/problemnew/show/P4562 https://www.lydsy.com/JudgeOnline/problem.php?id=5323 (BZOJ有点卡常数过不去.)时限已经开大. 实际上我们只需要求出l-r区间内有多少数是满足不存在l-r内的数a使得i*a=这个数. 我们欧拉筛实际上就是一个数可以分解成的最大的两个数(其中一个是最大质数)的乘积,于是我们判断那个合数是否<l且这个数是否在l~r的区间内,如果满足则这个数就是我们要求的.…
LINK:游戏 当L==1的时候 容易想到 答案和1的位置有关. 枚举1的位置 那么剩下的方案为(R-1)! 那么总答案为 (R+1)*R/2(R-1)! 考虑L==2的时候 对于一个排列什么时候会终止 容易发现是L~R中所有的质数 在这个排列中的最后一个位置的影响. 还是枚举这个质数的位置i 此时方案数为 C(i-1,s-1)s!(n-s)! 其中s为L~R之中所有的质数个数. 对于L>2 还是考虑先计算出s的个数 刚才是使用了线性筛 此时考虑 质数不能用了 那么可以考虑每个数是否为必要的数.…
嘟嘟嘟 九条可怜竟然有这种良心题,似乎稍稍刷新了我对九条可怜的认识. 首先假设我们求出了所有必须要筛出来的数m,那么\(t(p)\)就只受最后一个数的位置影响. 所以我们枚举最后一个数的位置,然后用组合数搞一下就完事了. 令\(dp[i]\)表示最后一个数在位置\(i\)时,\(t(p)\)的和,则 \[dp[i] = m * A_{i - 1} ^ {m - 1} * (n - m)!\] 然后答案就是\(\sum _ {i = 1} ^ {n} dp[i]\). 至于如何求\(m\),刚开始…