【jxoi2018】游戏 组合数学】的更多相关文章

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的个数 刚才是使用了线性筛 此时考虑 质数不能用了 那么可以考虑每个数是否为必要的数.…
题意 题目链接 Sol 这个题就比较休闲了. \(t(p)\)显然等于最后一个没有约数的数的位置,那么我们可以去枚举一下. 设没有约数的数的个数有\(cnt\)个 因此总的方案为\(\sum_{i=cnt}^{r-l+1} C_{i-1}^{cnt-1} cnt! (r - l + 1 - cnt)!\) 稍微有点卡常,筛的时候加一下剪枝 #include<bits/stdc++.h> #define Fin(x) freopen(#x".in", "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]\)每一个数向他的倍数连边.这可以形成一…
首先令$n=r-l+1$. 令$k$表示区间$[l,r]$中存在多少个数$x$,使得$x$不存在小于$x$且在区间$[l,r]$中的因数,我们把包含这些数的数集称为$S$ 我们来先想一个$O(nk)$的$min-max$容斥做法吧..... 显然这一题我们可以转化为min-max容斥的模型(将这k个数选完期望需要选多少次) $max_{S}=\sum_{T∈S}(-1)^{|T+1|}min_{T}$. 令$P_x=\sum_{T∈S\ and\ |T|=x} min_{T}$. 我们推一推式子…
可以发现这个过程非常类似埃氏筛,将在该区间内没有约数的数定义为质数,那么也就是求每种方案中选完所有质数的最早时间之和. 于是先求出上述定义中的质数个数,线性筛即可.然后对每个最短时间求方案数,非常显然的组合数.最好特判一下l=1的情况,毕竟如果1作为质数会有奇怪的事. 我的线性筛……跑的几乎跟埃氏筛差不多慢. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #incl…
传送门 \(\color{green}{solution}\) 它每次感染的人是它的倍数,那么我们只需要找出那些除了自己以外在\(l\), \(r\)内没有别的数是 它的约数的数,在这里称其为关键数. (比如区间是[3,7],那么这些数分别是\(3\),\(4\),\(5\),\(7\).因为\(6\)是\(3\)的倍数,所以不是). 我们记这些数的数量为\(sum\).那么设\(f_i\)为在第\(i\)时刻将说有人感染完的方案数. 那么换句话来说,就是最后一个关键数在第\(i\)时刻被感染.…
嘟嘟嘟 九条可怜竟然有这种良心题,似乎稍稍刷新了我对九条可怜的认识. 首先假设我们求出了所有必须要筛出来的数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\),刚开始…
正解:数论 解题报告: 传送门! 首先考虑怎么样的数可能出现在t(i)那个位置上?显然是[l,r]中所有无法被表示出来的数(就约数不在[l,r]内的数嘛QwQ 所以可以先把这些数筛出来 具体怎么筛的话,最原始的方法就埃氏筛? 然后显然可以线性筛,但我jio得大概快不到哪儿去而且麻烦一些懒得打了所以直接用的埃氏筛 然后现在就筛出来,有sum个满足条件的数了,考虑怎么算贡献?(先注明下,,,可能有些±1的细节下面都直接略过了QAQ 就先枚最后一个这样的数出现的位置x(也就是t(i)的取值 首先它自己…