[题解 LuoguP4491 [HAOI2018]染色】的更多相关文章

传送门 神仙计数题 Orz 先令\(F[k]\)表示出现次数恰好为\(S\)次的颜色恰好有\(k\)中的方案数,那么 \[Ans=\sum\limits_{i=0}^mW_iF[i]\] 怎么求\(F[k]\)呢?一个naive的想法,我指定哪\(k\)种颜色恰好染\(S\)次,然后剩下的\(n-kS\)个位置用剩下的\(m-k\)种颜色随便染 相当与对一个有\(k+1\)种元素的集合(前\(k\)中元素分别有\(S\)个,最后一种元素有\(n-kS\)个)做可重复集合全排列 这个方案数是\(\…
[题解][HAOI2018]染色(NTT+容斥/二项式反演) 可以直接写出式子: \[ f(x)={m \choose x}n!{(\dfrac 1 {(Sx)!})}^x(m-x)^{n-Sx}\dfrac 1 {(n-Sx)!} \] \(f(x)\) 钦定有\(x\)种颜色出现了恰好\(S\)的方案 然后推一下恰好有\(x\)种颜色出现了恰好\(S\)次的方案\(g(x)\) .推导在下下面. 最后的答案是\(\sum w_i g(i)\) 推导: 显然颜色种类不会超过\(L=\lfloo…
好坑啊不开心…… 其实这题的想法还是比较简单粗暴的.题目明示恰好xxx,显然排除斜率二分这个玩意儿,那么不就只剩下容斥了嘛…… 令 \(A_{x}\) 为恰好出现了 \(S\) 次的至少有 \(x\) 种的方案数, \({B_{x}}\) 为恰好出现了\(S\) 次的颜色恰好 \(x\) 种的方案数.\(A_{x}\) 可以 \(O(1)\) 求得,\(A_{x} = \frac{\binom{n}{S * x} * (m - x) ^ {n - S * x} * (S * i)!}{(S!)^…
非常明显的摆了一个NTT模数.... 题目中求恰好\(k\),那么考虑求至少\(k\) 记\(g(k)\)表示至少\(k\)中颜色出现了恰好\(S\)次 那么,\[g(k) = \binom{M}{k} \frac{N!}{(S!)^k (N-Sk)!} * (M-k)^{N-Sk}\] 根据广义容斥原理,记\(f(i)\)表示恰好\(k\)种颜色出现了恰好\(k\)次 那么,\[f(i) = \sum \limits_{k = i}^M (-1)^{k - i} \binom{k}{i} g(…
洛谷题目链接:[HAOI2018]染色 题目背景 HAOI2018 Round2 第二题 题目描述 为了报答小 C 的苹果, 小 G 打算送给热爱美术的小 C 一块画布, 这块画布可 以抽象为一个长度为 \(N\) 的序列, 每个位置都可以被染成 \(M\) 种颜色中的某一种. 然而小 C 只关心序列的 \(N\) 个位置中出现次数恰好为 \(S\) 的颜色种数, 如果恰 好出现了 \(S\) 次的颜色有 \(K\) 种, 则小 C 会产生 \(W_k\) 的愉悦度. 小 C 希望知道对于所有可…
[LG4491][HAOI2018]染色 题面 洛谷 题解 颜色的数量不超过\(lim=min(m,\frac nS)\) 考虑容斥,计算恰好出现\(S\)次的颜色至少\(i\)种的方案数\(f[i]\),钦定\(i\)种颜色至少放\(S\)种 有\(m\)种颜色,那么要乘上\(C_m^i\). 然后这\(n\)个位置分为\(i+1\)个部分:被钦定的\(i\)种颜色,每个\(S\)个:剩下\(m-i\)种颜色,一共\(n-iS\)种颜色,可以看作可重的全排列数,那么就有\(\frac{n!}{…
BZOJ 5306 [HAOI2018] 染色 首先,求出$N$个位置,出现次数恰好为$S$的颜色至少有$K$种. 方案数显然为$a_i=\frac{n!\times (m-i)^{m-i\times s}}{(m-K)!\times (s!)^K}\times C(m,K)$ 然后二项式反演一下,得到恰好的数量:$ans_i=\sum\limits_{j=i}^n (-1)^{j-i}\times a_i\times C(j,i)$ 然后展开一下就可以得到两个多项式:$A_i=\frac{m!…
BZOJ5306 [Haoi2018]染色 Solution xzz的博客 代码实现 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<algorithm> #include<queue> #include<set> #include<map> #include<iostream> us…
[BZOJ5306] [HAOI2018]染色(容斥原理+NTT) 题面 一个长度为 n的序列, 每个位置都可以被染成 m种颜色中的某一种. 如果n个位置中恰好出现了 S次的颜色有 K种, 则小 C 会产生 \(W_k\)的愉悦度. 求对于所有可能的染色方案, 他能获得的愉悦度的和.答案对 1004535809 取模 分析 显然颜色数量不超过\(tot=\min(m,\frac{n}{S})\) 我们需要求出现了\(S\)次的颜色有\(i\)种的方案数.这个东西不太好求,考虑容斥,求出现了\(S…
[BZOJ5306]染色(NTT) 题面 BZOJ 洛谷 题解 我们只需要考虑每一个\(W[i]\)的贡献就好了 令\(lim=min(M,\frac{N}{S})\) 那么,开始考虑每一个\(W[i]\)的贡献 \[\sum_{k=0}^{lim}W[k]C_M^kC_N^{kS}\frac{(kS)!}{(S!)^k}\times Others\] \(Others\)是其他的东西,先考虑前面这堆东西的意义. 我们枚举恰好出现了\(S\)次的颜色个数\(k\),那么,选定这些颜色的方案数 首…
$ \color{#0066ff}{ 题目描述 }$ 为了报答小 C 的苹果, 小 G 打算送给热爱美术的小 C 一块画布, 这块画布可 以抽象为一个长度为 \(N\) 的序列, 每个位置都可以被染成 \(M\) 种颜色中的某一种. 然而小 C 只关心序列的 \(N\) 个位置中出现次数恰好为 \(S\) 的颜色种数, 如果恰 好出现了 \(S\) 次的颜色有 \(K\) 种, 则小 C 会产生 \(W_k\) 的愉悦度. 小 C 希望知道对于所有可能的染色方案, 他能获得的愉悦度的和对 \(1…
题目 为了报答小 C 的苹果, 小 G 打算送给热爱美术的小 C 一块画布, 这块画布可 以抽象为一个长度为 \(N\) 的序列, 每个位置都可以被染成 \(M\) 种颜色中的某一种. 然而小 C 只关心序列的 \(N\) 个位置中出现次数恰好为 \(S\) 的颜色种数, 如果恰 好出现了 \(S\) 次的颜色有 \(K\) 种, 则小 C 会产生 \(W_k\) 的愉悦度. 小 C 希望知道对于所有可能的染色方案, 他能获得的愉悦度的和对 1004535809 取模的结果是多少. 输入格式 从…
嘟嘟嘟 这题当时没想出来(因为本人实在不太擅长计数),然后又被luogu的第一篇题解吓怕了,就咕了一小段时间再写. 其实这题不是很难. 做法就是基础容斥+NTT. 首先出现\(S\)次的颜色最多有\(N = min \{ \frac{n}{S}, m \}\)种. 我们令\(dp[i]\)表示出现\(S\)次的颜色至少有\(i\)种的方案数,那么共有\(C_{m} ^ {i}\)种颜色组合,这些颜色的位置共有\(C_{n} ^ {iS}\)种选取方案,剩下的位置每一位都有\(m\)中颜色可选,然…
题目链接:洛谷 题目大意:$n$个位置染$m$种颜色,如果出现次数恰为$S$次的颜色有$k$种,则对答案有$W_k$的贡献,求所有染色方案的答案之和$\bmod 1004535809$. 数据范围:$n\leq 10^7,m\leq 10^5,S\leq 150,0\leq W_i\leq 1004535808$ 首先是要推式子的. 首先我们知道,出现次数恰为$S$次的至多$up=\min(m,\frac{n}{S})$种. 设恰好出现$S$次的颜色至少$i$种,则 $$f_i=C_m^i*\f…
补充一篇详细得不能再详细的题解,比如让我自己看懂. 可能与前面的题解有些相同,我想补充一下自己的想法. 显然,最多 \(K\) 最大为 \(N=min(\lfloor \frac nS\rfloor,m)\) 首先,我们看到出现 \(S\) 次的颜色恰好 \(K\) 种的话,我们就可以考虑容斥,将其化为出现 \(S\) 次的颜色至少 \(K\) 种的方案数 \(f[K]\) 那么先选定在 \(m\) 中颜色中选定 \(i\) 种颜色,有 \(C_m^i\) 种 选定在 \(n\) 个位置中选定…
好像这个容斥还是明显的.一共有三个要求,可以用组合数先满足一个,再用容斥解决剩下的两个维.(反正这题数据范围这么小,随便乱搞都可以).用 \(a[k][i]\) 表示使用 \(k\) 种颜色,至少有 \(i\) 列没有染色的方案数,可以容斥预处理得到使用 \(k\) 种颜色染色使得每行每列均被染色的方案数.然后再容斥一下保证每种颜色都用上就可以了. #include <bits/stdc++.h> using namespace std; #define maxn 500 #define CN…
bzoj luogu Description 给一个长度为\(n\)的序列染色,每个位置上可以染\(m\)种颜色.如果染色后出现了\(S\)次的颜色有\(k\)种,那么这次染色就可以获得\(w_k\)的收益. 求所有染色方案的收益之和膜\(1004535809\). sol 整行公式太大了放不下就只能用行内公式了qaq 首先设\(N=\min(m,\lfloor\frac ns\rfloor)\),这是出现了\(S\)次的颜色种数的上界. 设\(F(i)\)表示染色后出现了\(S\)次的颜色有\…
给定长度为 $n$ 的序列, 每个位置都可以被染成 $m$ 种颜色中的某一种. 如果恰好出现了 $s$ 次的颜色有 $k$ 种, 则会产生 $w_{k}$ 的价值. 求对于所有可能的染色方案,获得价值和对 $1004535809$ 取模的结果. 设 $lim=min(m,\frac{n}{s})$,即最大可能的颜色出现种类. 按照套路,令 $f[i]$ 表示钦定 $i$ 种长度为 $s$ 出现的方案数,$g[i]$ 表示恰好 $i$ 种出现的方案数. $f[k]=\binom{m}{k}\fra…
前置芝士 可重集排列 NTT 前置定义 \[\begin{aligned}\\ f_i=C_m^i\cdot \frac{n!}{(S!)^i(n-iS)!}\cdot (m-i)^{n-iS}\\ ans_i=\sum\limits_{j=i}^lim (-1)^{j-i}C_j^i f_j\\ \end{aligned}\] 理解:\(m\)种颜色选i种恰好出现\(S\)次,可重全排列,剩余块染色,不过这样有可能会出现剩余块种有恰好出现\(S\)次的情况,所以容斥一下 \(C_j^i\):\…
题目链接 https://www.luogu.org/problemnew/show/P2486 分析 看上去又是一道强行把序列上问题搬运到树上的裸题,然而分析之后发现并不然... 首先我们考虑如何在序列上维护信息:从最简单的想起,如果两个相邻的元素合并,显然是这两个元素所含颜色段个数(其实就是1)加起来,如果两个元素颜色相同就减1;那么两个分别含有两个元素的相邻区间合并,还是把这两个区间所含颜色段个数加起来,如果左区间最右边的颜色等于右区间最左边的颜色就减去1. 如此我们已经得到线段树维护信息…
LINK:染色 算是比较常规的广义容斥. 算恰好k个 可以直接转成至少k个. 至少k个非常的好求 直接生成函数. 设\(g_k\)表示至少有k个颜色是满足的 那么有 \(g_k=C(m,k)\frac{n!}{(s!)^k}\frac{(m-k)^{n-sk}}{(n-sk)!}\) 设\(f_k\)表示恰好有k个颜色是满足的 那么有 \(f_k=\sum_{j=k}C(j,k)(-1)^{j-k}g_j\) 前者可以直接求 后者需要卷积一下. 坑点:模数不是998244353 是1004535…
题目分析: 一开始以为是直接用指数型生成函数,后来发现复杂度不对,想了一下容斥的方法. 对于有$i$种颜色恰好出现$s$次的情况,利用容斥原理得到方案数为 $$\binom{m}{i}\frac{P_{is}^{n}}{(s!)^i}(\sum_{j=0}^{m-i}(-1)^j\binom{m-i}{j}\frac{P_{js}^{n-is}}{(s!)^j}(m-i-j)^{n-is-js})$$ 值得注意的是$n-is-js<0$的时候,后面的式子直接等于$0$,特判一下就行了. 那么答案…
传送门 调了1h竟然是因为1004535809写成了998244353 "恰好有\(K\)种颜色出现了\(S\)次"的限制似乎并不容易达到,考虑容斥计算. 令\(c_j\)表示强制\(j\)种颜色恰好出现\(S\)次,其他颜色随意染的方案数.可以通过生成函数知道 \(\begin{align*} c_j &= \binom{m}{j} n! [x^n] (\frac{x^k}{k!})^j (\sum\limits_{i=0}^\infty \frac{x^i}{i!})^{m…
传送门 这一类题都要考虑推式子 首先推出题目要求的式子,枚举正好有\(s\)个颜色的种类(范围\([0,p=min(\lfloor\frac{n}{s}\rfloor,m)]\)),然后对于后面的颜色可能也有数量为\(s\)的,容斥一下即可,即\[ans=\sum_{k=0}^{p}w_k*\binom{m}{k}*\binom{n}{ks}*\frac{(ks)!}{(s!)^k}\sum_{i=0}^{p-k}(-1)^i*\binom{m-k}{i}*\binom{n-ks}{is}*\f…
容易想到枚举恰好出现S次的颜色有几种.如果固定至少有i种恰好出现S次,那么方案数是C(M,i)·C(N,i*S)·(M-i)N-i*S·(i*S)!/(S!)i,设为f(i). 于是考虑容斥,可得恰好i种的答案为Σ(-1)j-iC(j,i)·f(j) (j=i~min(M,⌊N/S⌋)).因为容斥是一个枚举子集的过程,在算至少i种的方案时,f(j)被计入了C(j,i)次. f显然可以通过预处理阶乘及其逆元线性地算出来.考虑怎么快速算后一部分.注意到模数,NTT没跑了.拆开组合数,可以发现是与j-…
显然颜色数量不会超过\(lim=\min(m,n/S)\) 考虑容斥,计算恰好出现了\(S\)次的颜色有至少\(i\)种的方案数\(f[i]\),钦定\(i\)种颜色正好放\(S\)种 有\(m\)种颜色选\(i\)种,所以乘一个\(C_m^i\) 然后这n个位置分成\(i+1\)个部分:被钦定的\(i\)种颜色,每个有\(S\)个:剩下的\(m-i\)种颜色,一共\(n-iS\)个.先看作是可重的全排列数,那么方案就有\(\frac{n!}{(S!)^i(n-iS)!}\)种.前\(i\)各部…
https://www.cnblogs.com/zhoushuyu/p/9138251.html 注意如果一开始F(i)中内层式子中j枚举的是除前i种颜色之外还有几种出现S次的颜色,那么后面式子就会难推很多. #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namespace std; ,M=,mod=; int n,m,s,ans,w[N],…
BZOJ 5306 考虑计算恰好出现$s$次的颜色有$k$种的方案数. 首先可以设$lim = min(m, \left \lfloor \frac{n}{s} \right \rfloor)$,我们在计算的时候只要算到这个$lim$就可以了. 设$f(k)$表示出现$s$次的颜色至少有$k$种的方案数,则 $$f(k) = \binom{m}{k}\binom{n}{ks}\frac{(ks)!}{(s!)^k}(m - k)^{n - ks}$$ 就是先选出$k$个颜色和$ks$个格子放这些…
[HZOI 2015] 有标号的DAG计数 I 设\(f_i\)为\(i\)个点时的DAG图,(不必联通) 考虑如何转移,由于一个DAG必然有至少一个出度为\(0\)的点,所以我们钦定多少个出度为\(0\)的点转移. 考虑如何保证没有环,钦定完出度为\(0\)的点后,这些点就等着被连接了.还剩下一些点,这些点只要不构成环就好了,就是个子结构,访问以前的DP数组就好了. \[ {i\choose j}2^{j\times (i-j)}dp_{i-j} \] 这样转移显然有方案重复的情况,因为如此计…
[题解]CTS2019珍珠 题目就是要满足这样一个条件\(c_i\)代表出现次数 \[ \sum {[\dfrac {c_i } 2]} \ge 2m \] 显然\(\sum c_i=n\)所以,而且假如\(c_i\)是\(2\)的约数就有正常的贡献,如果不是就有少一点的贡献,那么 \[ \sum^D_{i=1} {[2\mid c_i]} > n-2m \] 设\(f_i\)为钦定有\(i\)种颜色出现偶数次的方案.问题瞬间就变成了HAOI染色... 则有 \[ f_i={D\choose i…