【题解】JXOI2018游戏(组合数)】的更多相关文章

[题解]JXOI2018游戏(组合数) 题目大意 对于\([l,r]\)中的数,你有一种操作,就是删除一个数及其所有倍数.问你删除所有数的所有方案的步数之和. 由于这里是简化题意,有一个东西没有提到: 你可以"删除"已经被删除的点.而且即使你已经删掉了所有的数,若你仍然要继续操作直到做了\(r-l+1\)次不同的删除动作.这将计入方案. 可能还是没有讲清楚,可以去康康原题... 实际上我想写一下题解是因为一个思想的方法... 考虑将\([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被…
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的区间内,如果满足则这个数就是我们要求的.…
嘟嘟嘟 九条可怜竟然有这种良心题,似乎稍稍刷新了我对九条可怜的认识. 首先假设我们求出了所有必须要筛出来的数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\),刚开始…
Description Solution 核心思想是把组合数当成一个奇怪的多项式,然后拉格朗日插值..:哦对了,还要用到第二类斯特林数(就是把若干个球放到若干个盒子)的一个公式: $x^{n}=\sum _{i=0}^{n}C(n,i)*i!*S(i,x)$ 围观大佬博客(qaq公式太难打了) Code #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using na…
可以发现这个过程非常类似埃氏筛,将在该区间内没有约数的数定义为质数,那么也就是求每种方案中选完所有质数的最早时间之和. 于是先求出上述定义中的质数个数,线性筛即可.然后对每个最短时间求方案数,非常显然的组合数.最好特判一下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]$的数的数量). 每种排列对答案的贡献…
P1000这么难,必须要水一篇题解/斜眼笑 ******** ************ ####....#. #..###.....##.... ###.......###### ### ### ........... #...# #...# ##*####### #.#.# #.#.# ####*******###### #.#.# #.#.# ...#***.****.*###.... #...# #...# ....**********##..... ### ### ....**** **…
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"…
正解:数论 解题报告: 传送门! 首先考虑怎么样的数可能出现在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\) 的倍数的办公室,通知他们老板来了,让他们认真工作.因此,可…
传送门 \(\color{green}{solution}\) 它每次感染的人是它的倍数,那么我们只需要找出那些除了自己以外在\(l\), \(r\)内没有别的数是 它的约数的数,在这里称其为关键数. (比如区间是[3,7],那么这些数分别是\(3\),\(4\),\(5\),\(7\).因为\(6\)是\(3\)的倍数,所以不是). 我们记这些数的数量为\(sum\).那么设\(f_i\)为在第\(i\)时刻将说有人感染完的方案数. 那么换句话来说,就是最后一个关键数在第\(i\)时刻被感染.…
bfs #include <bits/stdc++.h> const int maxn = 100; using namespace std; int n, m, t; bool hasDanger[maxn + 10][maxn + 10]; int danger[maxn + 10][maxn + 10][2]; struct tNode { int r, c; int time; tNode(int rr, int cc, int ttime):r(rr), c(cc), time(tt…
题目 我们用埃氏筛从\(l,r\)筛一遍,每次把没有被筛掉的数的倍数筛掉. 易知最后剩下来的数(这个集合记为\(S\))的个数就是我们需要选的数,设有\(s\)个,令\(n=r-l+1\). 记\(f_i\)为第\(i\)次操作筛完的方案数,我们要求的就是\(\sum\limits_{i=s}^n if_i\) 枚举最后一次操作,方案数为\(s\). 后面的位置从任选不属于\(S\)的数的方案数为\(n-s\choose n-i\). 前面\(i-1\)个数是哪些就确定了,排列方案数为\((i-…
题面 洛谷 题解 \(Nim\)游戏模板题 #include<iostream> #include<cstdio> #include<cstdlib> using namespace std; inline int read() { int x=0;bool t=false;char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=true,ch…
[BZOJ1022]小约翰的游戏(博弈论) 题面 BZOJ 题解 \(Anti-SG\)游戏的模板题目. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define ll long long #define RG regis…
题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取.每次只能从一堆里取.最后没石子可取的人就输了.假如甲是先手,且告诉你这n堆石子的数量,他想知道是否存在先手必胜的策略. 输入输出格式 输入格式: 第一行一个整数T<=10,表示有T组数据 接下来每两行是一组数据,第一行一个整数n,表示有n堆石子,n<=10000; 第二行有n个数,表示每一堆石子的数量 输出格式:…
打这场的时候迷迷糊糊的,然后掉分了( A Prison Break: 题面很复杂,但是题意很简单,仅需求出从这个点到四个角的最大的曼哈顿距离即可 #include <bits/stdc++.h> using namespace std; typedef long long ll; int times; int n,m,r,c; int main() { ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin >> times…
突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf\)的题目,以及\(loj\)上的一些省的集训题目,还有\(uoj\)的各种\(round\)的题目. 大块大块的做题记录就在这里记录一下,省选后再来看结果,至少努力过就不曾后悔了不是吗? 首先先是省选题的记录,然后有比赛的记录,做到每周至少完成一整场\(CF\)或者\(AtCoder\)比赛的题解…
入门题 : [Luogu1441]砝码称重 , [NOIP2015]子串 [AHOI2009]中国象棋 , 详见代码 [HNOI2007]梦幻岛宝珠 , 详见代码 [NOIP2012]开车旅行 , 没有代码... 预处理出\(ga[i] , gb[i]\)代表从城市\(i\)出发\(A\)或\(B\)走一步会到达的城市 设\(f[i][j][k]\)表示从城市\(j\)出发 , 两人共驾驶\(2^i\)天 , \(k\)先开车 , 最终会到达的城市 设\(da[i][j][k]\)表示从城市\(…
NOIp膜你题   Day2 duliu 出题人:ZAY     题解 这就是一道组合数问题鸭!!!  可是泥为什么没有推出式子!! 首先我们知道的是 m 盆花都要摆上,然后他们的顺序不定(主人公忘记了) 所以初步得到一个排列数 P( m,m ) , 即 Pmm 那么我们就还剩下 n-m 个空位置,这些空位置都是不可以放花的,于是我们逆向思维一下: n-m  个位置不放花,也就是可以在这些位置周围插空放花,把这些位置隔开,那么就可以把m盆花放到 n-m+1 个空里,由于这是对于空位置来说的,没有…
1009 E. Intercity Travelling 题意:一段路n个点,走i千米有对应的a[i]疲劳值.但是可以选择在除终点外的其余n-1个点休息,则下一个点开始,疲劳值从a[1]开始累加.休息与不休息等概率,设疲劳值总和的期望为p,求p*2n-1 思路:由于期望乘上了2n-1,所以数学意义就是求所有休息情况下的疲劳值总和.问题转化为,每种疲劳出现的次数Ni.网上题解大多数从组合数的角度计数,可能是我理解能力不够,总觉得讲的不太严谨,推导的过程略显随意,更多像是找规律的结果.琢磨了一会,觉…
ans=1000*4 分别固定千位,百位,十位,个位为1,其余位置随便排 对于每一个质因数的n次方,共有n+1中选择方法,即这个质因数的0~n次方 故共有   4*3*5=60  种方法 (1)取两册文字不同的书的方案=取日文英文+取日文中文+取英文中文 5*7+5*10+7*10 (2)相同的:取日文日文,取中文中文,取英文英文 5*4/2+7*6/2+10*9/2 (3)     (1)+(2) PS:高中课本上写的是 A(然鹅这并不对) 而不是 P 考虑两面旗帜的方法和三盆花的方法,根据乘…
目录 A-积木大赛 题目描述 link 题解 代码 B-破碎的序列 题目描述 link 题解 C-分班问题 题目描述 link 题解 比赛链接 官方题解 A-积木大赛 题目描述 link 题解 标签:模板题,一点点思维+二维差分+二维前缀和 借这道题机会复习了一下二维差分+二维前缀和这两个东西. 首先题目让我们求总的表面积,实际上可以拆分成两部分:上下表面积+前后左右表面积 1.上下表面积的话,根据俯视图想一想,就是有被积木覆盖额面积\(*2\): 2.前后左右表面积的话,感性理解一下,只要他的…
JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法描述大致如下: 假设我们要对一个大小为 \(n\) 的数列 \(a\) 排序. 等概率随机生成一个大小为 \(n\) 的排列 \(p\) . 构造一个大小为 \(n\) 的数列 \(b\) 满足 \(b_i=a_{p_i}\) ,检查 \(b\) 是否有序,如果 \(b\) 已经有序了就结束算法,并…
题目 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色.最左边是白色棋子,最右边 是黑色棋子,相邻的棋子颜色不同. 小奇可以移动白色棋子,提比可以移动黑色的棋子,它们每次操作可以移动1到d个棋子.每当移动某一个棋子时, 这个棋子不能跨越两边的棋子,当然也不可以出界.当谁不可以操作时,谁就失败了.小奇和提比轮流操作,现在 小奇先移动,有多少种初始棋子的布局会使它有必胜策略? 输入格式 共一行,三个数,n,k,d.对于100%的数据,有1<=d<=k<=n<…