【集训队作业2018】count】的更多相关文章

UOJ #449. [集训队作业2018]喂鸽子 小Z是养鸽子的人.一天,小Z给鸽子们喂玉米吃.一共有n只鸽子,小Z每秒会等概率选择一只鸽子并给他一粒玉米.一只鸽子饱了当且仅当它吃了的玉米粒数量\(≥k\). 小Z想要你告诉他,期望多少秒之后所有的鸽子都饱了. 假设答案的最简分数形式为\(\frac{a}{b}\),你需要求出\(w\),满足\(a≡b⋅w \pmod{998244353}(0≤w<998244353).\) \(n\leq 50,k\leq 1000\) Orz 首先可以用\(…
题目链接: [集训队作业2018]小Z的礼物 题目要求的就是最后一个喜欢的物品的期望得到时间. 根据$min-max$容斥可以知道$E(max(S))=\sum\limits_{T\subseteq S}^{ }(-1)^{|T|-1}E(min(T))$ 那么只需要知道每个子集中最早得到的物品的期望时间即可得出答案. 对于每个子集,最早得到的物品的期望时间就是一次选择能得到这个子集中元素的概率的倒数. 用一次选择能得到这个子集中的元素的方案数除上总方案数(每次共有$2*n*m-n-m$种选择方…
[UOJ#450][集训队作业2018]复读机(生成函数,单位根反演) 题面 UOJ 题解 似乎是\(\mbox{Anson}\)爷的题. \(d=1\)的时候,随便怎么都行,答案就是\(k^n\). \(d=2\)的时候,可以做一个\(dp\),设\(f[i][j]\)表示前\(i\)个复读机选了\(j\)个时间的方案数. 然后枚举当前这个复读机复读的次数,得到: \[f[x][j]=\sum_{i=0}^{j}[2|i]{n-j+i\choose i}f[x-1][j-i]\] 化简啥的之后…
[UOJ#422][集训队作业2018]小Z的礼物(min-max容斥,轮廓线dp) 题面 UOJ 题解 毒瘤xzy,怎么能搬这种题当做WC模拟题QwQ 一开始开错题了,根本就不会做. 后来发现是每次任意覆盖相邻的两个,那么很明显就可以套\(min-max\)容斥. 要求的就是\(max(All)\),而每个集合的\(min\)是很好求的. 如果直接暴力枚举集合复杂度就是\(2^{cnt}cnt\). 仔细想想每个子集我们要知道的是什么,只需要知道子集大小来确定前面的容斥系数,还需要知道覆盖子集…
#418. [集训队作业2018]三角形 和三角形没有关系 只要知道儿子放置的顺序,就可以直接模拟了 记录历史最大值 用一个pair(a,b):之后加上a个,期间最大值为增加b个 合并? A1+A2=(a1+a2,max(b1,a1+b2)) 放置顺序考虑贪心 比较: A放在B前面(和父亲进行合并)当且仅当(C=A+B).b<(D=B+A).b 分A.a和B.a的正负进行讨论 初始的pair:(w[x]-∑w[son[x]],w[x])把儿子会都扔掉 初始的pair放进堆里,取n-1次,和父亲合…
T1: [集训队作业2018]小Z的礼物 我们发现我们要求的是覆盖所有集合里的元素的期望时间. 设\(t_{i,j}\)表示第一次覆盖第i行第j列的格子的时间,我们要求的是\(max\{ALL\}\) 考虑\(min-max容斥\).\(max\{S\}=\sum_{S \subset T}(-1) ^{|T|-1}min\{T\}\) 此时我们要求的变为了\(min\{T\}\),即\(T\)中至少有一个元素被选择的期望. 我们知道当\(T\)中元素被选择的概率为\(P\)时,其期望为\(\f…
题目链接: [集训队作业2018]蜀道难 题目大意:给出一棵$n$个节点的树,要求给每个点赋一个$1\sim n$之内的权值使所有点的权值是$1\sim n$的一个排列,定义一条边的权值为两端点权值差的绝对值,要求对于任意两点间的路径要么路径上所有点的点权单调,要么存在路径上的第三个点到这两个点的路径分别单调(即两点间路径先单调递增再单调递减或先单调递减再单调递增).求出整棵树最小边权和,并支持动态插入点之后完成上述问题. 前言: 这道题综合性比较强且代码量及细节非常多,是迄今为止我做过最神仙的…
#422. [集训队作业2018]小Z的礼物 min-max容斥 转化为每个集合最早被染色的期望时间 如果有x个选择可以染色,那么期望时间就是((n-1)*m+(m-1)*n))/x 但是x会变,中途统计答案会很麻烦 所以把x记录到状态里! 轮廓线DP f[i][j][s][x]到了(i,j),轮廓线选择情况是s,x个选择可以染色的所有方案的(-1)^(|T|+1)的和 枚举(i,j)选不选,x的增长直接用s和(i,j)位置计算即可. 相当于每个T在x的位置上被考虑了恰好一次. #include…
#428. [集训队作业2018]普通的计数题 模型转化好题 所以变成统计有标号合法的树的个数. 合法限制: 1.根标号比子树都大 2.如果儿子全是叶子,数量B中有 3.如果存在一个儿子不是叶子,数量A中有 然后考虑DP 直接枚举根的儿子的情况 cdq分治NTT还是很恶心的 不光是自己卷自己,还是互相卷 进行一番化简和平移之后,可以转化为cdq分治NTT的形式: 怎么好做怎么来. 反正我最后推的式子有如下特点(式子就不写了): 为了方便,钦定g[0],f[0],g[1],f[1]都是0 对于f,…
uoj450 [集训队作业2018]复读机(生成函数,单位根反演) uoj 题解时间 首先直接搞出单个复读机的生成函数 $ \sum\limits_{ i = 0 }^{ k } [ d | i ] \frac{ x^{ i } }{ i! } $ . 容易想到直接上单位根反演: \[\begin{aligned} \sum\limits_{ i = 0 }^{ k } [ d | i ] \frac{ x^{ i } }{ i! } & = \sum\limits_{ i = 0 }^{ k…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ424.html 题解 主席太神仙了! 首先我们把题意转化成:对所有挺好序列建 笛卡尔树,有多少笛卡尔树互不同构. 容易推出 dp 式子:$f[i][j]$ 表示 $j$ 个数,他们的 max 为 i . $$f[i][j] = \sum_{k=0}^{j-1} f[i-1][k] * f[i][j-k-1]\\f[i][0] = 1\\f[0][i] = 0(i>0)\\f[1][i] = 1$$ 这里…
题意 我们定义长度为\(n\),每个数为\(1\sim m\)之间的整数且\(1\sim m\)都至少出现一次的序列为合法序列.再定义\(pos(l,r)\)表示这个序列的区间\([l,r]\)之间的最大值出现的位置(如果有多个取最左端),如果两个序列\(A\),\(B\)的所有\(pos\)值都相同,则\(A\)和\(B\)是同构的.问有多少不同构的合法序列. \(n,m\leq 100000\). 题解 首先\(n<m\)显然是无解的. 考虑什么样的序列是同构的,那么我们首先要有一个能方便的…
题面 请务必不要吐槽我的标签 传送门 思路 一个很重要的结论:原序列的一组同构的解等价于同一棵拥有$n$个节点的笛卡尔树 注意笛卡尔树的定义:父亲节点是区间最值,并且分割区间为左右部分 所以如果两个序列的笛卡尔树同构,那么他们的每一个区间最小值位置相同,也就是原题目中的同构条件了 一个很重要的结论:定义笛卡尔树节点的深度为根到这个节点的路径上向左走的次数,那么合法序列的笛卡尔树所有节点深度不超过$m$ 首先,我们可以定义区间的父节点是所有最值中最靠左的,那么容易得到,节点的左儿子中的所有权值严格…
CSP后第一发Blog. 这道题没有一下子过掉,开始还推出了错的结论.在错误的生成函数里绕了好久-- 很显然的转笛卡尔树,一个笛卡尔树对应一种序列.只要考虑一个笛卡尔树是否合法. 贪心地填数发现,从根到每一个叶子最多只能有 \(m - 1\) 个向左. 于是直接上生成函数.设 \(f_m(x)\) 为至多有 \(m\) 个向左的方案数,显然 \(f_m = x f_{m-1} f_m + 1\). 解出 \(f_m = \frac{1}{1-x f_{m-1}}\),设 \(f_m = \fra…
题目大意 有 \(n\) 堆石子,初始时第 \(i\) 堆石子有 \(a_i\) 个. 你每次取石子会取 \(k\) 个.在你取完一堆石子之后才能在下一堆中取石子. 游戏会进行 \(t\) 轮,每轮会发生以下事件: 你可以进行任意次取石子操作. 每堆的石子个数会增加,具体的,第 \(i\) 堆的式子个数会增加 \(b_i\) 个. 每一堆式子有个上限 \(c_i\),如果在某个时刻,某堆石子的数量超过上限,就就输了. 求在不会输掉游戏的前提下,你最少进行几次取石子操作. \(n,t\leq 20…
题目大意 有一个 \(n\times m\) 的矩阵 \(A\),每个元素都是 \([0,1]\) 内的等概率随机实数,记 \(s_i=\sum_{j=1}^mA_{i,j}\),求 \(\lfloor\min s_i\rfloor^k\) 的期望. 对 \(998244353\) 取模. \(n\leq {10}^9,m\leq 5\times {10}^5,k\leq {10}^9\) 题解 我们只用求 \(\lfloor s_i\rfloor\) 为 \(0\) 到 \(m-1\) 中每个…
题目大意 有一个 \(n\times k\) 的 01矩阵 \(C\),求有多少个 \(n\times m\) 的矩阵 \(A\) 和 \(m\times k\) 的矩阵 \(B\),满足 \(A\times B=C\).系数对 \(2\) 取模. 还有 \(q\) 次操作,每次会修改 \(C\) 中一行的值. 要对每次修改后的矩阵计算答案. \(n,m,k,q\leq 1000\). 题解 可以发现,答案只跟 \(C\) 的秩有关.因为如果我们对 \(C\) 做行变换或列变换,那么就可以对 \…
题目大意 给你 \(n,m\),求 \[ \sum_{i=1}^n\sum_{x_1,x_2,\ldots,x_m=1}^i\operatorname{lcm}(\gcd(i,x_1),\gcd(i,x_2),\ldots,\gcd(i,x_m)) \] 对 \({10}^9+7\) 取模. \(nm\leq {10}^9\) 题解 先推一下式子: \[ ans=\sum_{i=1}^n\sum_{x_1,x_2,\ldots,x_m=1}^i\operatorname{lcm}(\gcd(i,…
题目大意 求多项式 \(\prod_{i=1}^n(x+i)\) 的系数在模 \(p\) 意义下的分布,对 \(998244353\) 取模. \(p\) 为质数. \(n\leq {10}^{18},p\leq 250000\) 题解 我们只计算 \([1,p-1]\) 的分布,最后再算出 \(0\) 的出现次数. 记 \(n1=\lfloor\frac{n}{p}\rfloor,n2=n\bmod p\).若 \(n\bmod p=p-1\),则 \(n1=\lfloor\frac{n}{p…
题意 有 \(n\) 只鸽子,每只鸽子需要 \(k\) 粒玉米才能喂饱.问每次随意喂给 \(n\) 个鸽子中的一个,期望多久所有鸽子都被喂饱. 对于 \(998244353\) 取模. 数据范围 \(n \le 50, k \le 1000\) 题解 \(\mathcal O(n^2k \log k)\) 题目问的是最晚喂饱的鸽子,我们用 \(\min - \max\) 反演变成对于每个集合问最早被喂饱的鸽子. 不难发现只有集合大小是有用的,我们等价于算: \[ ans = \sum_{c =…
UOJ #450 题意 有$ k$台复读机,每时每刻有且只有一台复读机进行复读 求$ n$时刻后每台复读机的复读次数都是$ d$的倍数的方案数 $ 1\leq d \leq 3,k \leq 5·10^5,n \leq 10^9$ 当$ d=3$时$ k \leq 10^3$ 题解 $ d=1$的略过 对复读机构建生成函数 发现这是指数生成函数 即我们要计算的是$$(\sum_{i=0}^n[d|i]\frac{x^i}{i!})^k[x^n]=(\sum_{i=0}^n[d|i]e^x)^k…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ435.html 前言 分块题果然是我这种蒟蒻写不动的.由于种种原因,我写代码的时候打错了很多东西,最致命的是数组开小了.**windows不能检测数组越界,能眼查出来这运气是真的好. 题解 首先树链剖分,把问题转化为序列上的问题. 然后我们分块. 考虑如何维护每一块的答案. 初始时,我们预处理将每一块的相同值元素合并. 考虑修改操作: 如果是整块修改,那么临界指针位移即可. 否则就是零散修改,我们可以直接重构整个块.由…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ449.html 题解 设 f(i) 表示给 i 只鸽子喂食使得至少一只鸽子被喂饱的期望次数,先 min-max容斥 一下.($\frac ni$ 表示期望每 $\frac ni$ 步喂这 i 只鸽子一次) $$ans = \sum_{i=1}^n (-1)^{i+1}\binom ni \frac ni \cdot f(i)$$ 考虑如何求 f(i) .假设我们喂饱的是第一只鸽子,那么假设我们喂了其他鸽子 j 次,那么…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ450.html 题解 首先有一个东西叫做“单位根反演”,它在 FFT 的时候用到过: $$\frac 1 n \sum_{i=0}^{n-1} \omega_n ^{d\cdot i} = [d|n]$$ 其中 $\omega_n$ 表示 $n$ 次单位根. 接下来我们回到本题. 我们来搞一个指数生成函数,第 i 项表示总共复读 i 次,使得一个复读机开心的方案. $$f(x) = \sum_{i\ge…
题面 传送门 题解 首先您得会用格林公式计算圆的面积并 这里只需要动态维护一下圆弧就可以了 时间复杂度\(O(n^2\log n)\) //minamoto #include<bits/stdc++.h> #define R register #define inline __inline__ __attribute__((always_inline)) #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b…
题目大意: 有一棵有根树,根为 1 ,点有点权.现在有 m 次操作,操作有 3 种:1 x y w ,将 x 到 y 的路径上的点点权加上 w (其中 w=±1w=±1 ):2 x y ,询问在 x 到 y 的路径上有多少个点点权 >0 :3 x ,询问在 x 的子树里的点有多少个点点权 >0 . 数据范围:$n,m≤10^5$,点权的绝对值$≤10^9$. 这一题正常的做法并不是特别优秀,我们考虑一些分块做法 考虑求一个连续的区间内有多少个数$>0$,我们显然可以将原序列分成$\sqr…
传送门 \(d=1\) 输出 \(k^n\) \(d=2\),构造生成函数,就是求 \[(\sum_{i=0}^{\infty}[2|i]\frac{x^i}{i!})^k[x^n]=(\frac{e^x+e^{-x}}{2})^k\] 直接二项式定理展开求 \(n\) 次项系数即可 \(d=3\),构造生成函数,就是求 \[(\sum_{i=0}^{\infty}[3|i]\frac{x^i}{i!})^k[x^n]\] \(19491001-1\) 正好是 \(3\) 的倍数,直接单位根弄一…
题面 传送门 题解 我对线代一无所知 如果下面有啥说错的地方请说出来省的我一辈子都搞不明白 如果你没看懂以下在讲什么不要紧,因为我也没看懂 首先,关于\(A\times B \equiv C \pmod{2}\)的方程的一组合法解,\(C\)的列向量必定在\(A\)的列向量的线性空间里 那么\(B\)就可以看成一个方程组-- 设\(A\)的秩为\(x\),那么\(B\)的合法的解的个数就是\((2^{q-x})^s\) 大概意思就是说因为\(A\)的秩只有\(x\),每一列对应一个异或方程组,有…
题面 传送门 题解 我的生成函数和单位根反演的芝士都一塌糊涂啊-- \(d=1\),答案就是\(k^n\)(因为这里\(k\)个复读机互不相同,就是说有标号) \(d=2\),我们考虑复读机的生成函数 \[\left(\sum_{i=0}^\infty [2|i]{x^i\over i!}\right)^k[x^n]=\left(e^x+e^{-x}\over 2\right)^k[x^n]\] 后面那个可以二项式定理展开 顺便说一下,对于形如\(e^{ax}\)项的第\(n\)项系数就是把\(…
题面 传送门 题解 肝了整整一天--膜拜yww和cx巨巨--(虽然它们的题解里我就没看懂几个字) 请备好草稿纸和笔,这种题目就是需要耐心推倒 题目所求是这么一个东西 \[ \begin{aligned} ans &=\sum_{i=1}^n\sum_{x_1=1}^i\sum_{x_2=1}^i...\sum_{x_k=1}^ilcm(\gcd(i,x_1),\gcd(i,x_2),...,\gcd(i,x_k))\\ &=\sum_{i=1}^n\sum_{x_1=1}^i\sum_{x…