[JXOI2018]游戏】的更多相关文章

[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]\)每一个数向他的倍数连边.这可以形成一…
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\),刚开始…
题意 题目链接 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"…
正解:数论 解题报告: 传送门! 首先考虑怎么样的数可能出现在t(i)那个位置上?显然是[l,r]中所有无法被表示出来的数(就约数不在[l,r]内的数嘛QwQ 所以可以先把这些数筛出来 具体怎么筛的话,最原始的方法就埃氏筛? 然后显然可以线性筛,但我jio得大概快不到哪儿去而且麻烦一些懒得打了所以直接用的埃氏筛 然后现在就筛出来,有sum个满足条件的数了,考虑怎么算贡献?(先注明下,,,可能有些±1的细节下面都直接略过了QAQ 就先枚最后一个这样的数出现的位置x(也就是t(i)的取值 首先它自己…
传送门 不难发现,所有不能被其他数筛掉的数是一定要选的,只有选了这些数字才能结束 假设有 \(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…
题面 题目描述 她长大以后创业了,开了一个公司. 但是管理公司是一个很累人的活,员工们经常背着可怜偷懒,可怜需要时不时对办公室进行检查. 可怜公司有 \(n\) 个办公室,办公室编号是 \(l\) 到 \(l+n-1\) ,可怜会事先制定一个顺序,按照这个顺序依次检查办公室.一开始的时候,所有办公室的员工都在偷懒,当她检查完编号是 \(i\) 的办公室时候,这个办公室的员工会认真工作,并且这个办公室的员工通知所有办公室编号是 \(i\) 的倍数的办公室,通知他们老板来了,让他们认真工作.因此,可…
可以发现这个过程非常类似埃氏筛,将在该区间内没有约数的数定义为质数,那么也就是求每种方案中选完所有质数的最早时间之和. 于是先求出上述定义中的质数个数,线性筛即可.然后对每个最短时间求方案数,非常显然的组合数.最好特判一下l=1的情况,毕竟如果1作为质数会有奇怪的事. 我的线性筛……跑的几乎跟埃氏筛差不多慢. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #incl…