\(\mathcal{Description}\)   Link.   给定一个 \(n \times m\) 的矩阵,每行被划分为若干段,你可以钦定每段中恰好一个位置为 \(1\),其余位置为 \(0\).设 \(c_i\) 为第 \(i\) 列 \(1\) 的个数,最大化 \(\sum_{i=1}^{m} c_i^2\).   \(n,m\le100\). \(\mathcal{Solution}\)   区间 DP,不过状态设计比较巧妙:令 \(f(l,r)\) 表示确定在 \([l,r]…
\(\mathcal{Description}\)   Link.   给定两个长度为 \(K\) 的 \(01\) 串 \(S,T\) 和 \(n\) 组操作 \((a_i,b_i)\),意义为交换 \(S_{a_i}\) 和 \(S_{b_i}\).你需要执行一段长度不小于 \(m\) 的连续操作区间,最大化 \(S\) 和 \(T\) 相同的位数.求出最大相同位数.   \(K\le20\),\(m\le n\le10^6\). \(\mathcal{Solution}\)   一个简单的…
\(\mathcal{Description}\)   Link.   在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\) 对车可以互相攻击.   的摆放方案数,对 \(998244353\) 取模.   \(n\le2\times10^5\). \(\mathcal{Solution}\)   这道<蓝题>嗷,看来兔是个傻子.   从第一个条件入手,所有格子可被攻击,那就有「每行都有车」或「每列都有车」成立.不妨…
\(\mathscr{Description}\)   Link.   求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最大化 \(|S|\).   \(n\le10^6\). \(\mathscr{Solution}\)   爆搜打出 \(20\) 以内的表,发现 \(|S|\approx n\).先研究偶数 \(n=2k\): \[\begin{aligned} \prod_{i=1}^{2k} i! &= \le…
\(\mathscr{Description}\)   Link.   给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varphi:V_1\rightarrow V_2\),使得 \(\forall (u,v)\in V_1^2,~(u,v)\notin E_1\lor (\varphi(u),\varphi(v))\notin E_2\),或声明无解.   \(n\le10^4\). \(\mathscr{Solution…
\(\mathcal{Description}\)   Link.   有一个整数 \(x\in[0,n]\),初始时以 \(p_i\) 的概率取值 \(i\).进行 \(m\) 轮变换,每次均匀随机取整数 \(r\in[0,x]\),令 \(x\leftarrow r\).求变换完成后 \(x=i~(i=0..n)\) 的概率.答案模 \(998244353\). \(\mathcal{Solution}\)   令向量 \(\boldsymbol p\) 为此时 \(x\) 的取值概率,显然…
\(\mathcal{Description}\)   Link.   定义有向图 \(G=(V,E)\),\(|V|=n\),\(\lang u,v\rang \in E \Leftrightarrow u<v\).求一个对 \(E\) 的染色 \(f\),使得 \(\not\exist \lang v_1,v_2,\cdots,v_{k+1} \rang, |\{f(v_i,v_{i+1})\mid i\in[1,k]\}|=1\),同时最小化 \(f\) 的值域大小.   \(2\le k…
\(\mathcal{Description}\)   Link.   定义棵点权为 \(1\sim n\) 的二叉搜索树 \(T\) 是 好树,当且仅当: 除去最深的所有叶子后,\(T\) 是满的: 对于 \(T\) 中任意结点 \(r\),若 \(r\) 存在左儿子 \(u\),则 \(r\not\equiv u\pmod2\): 若 \(r\) 存在右儿子 \(v\),则 \(r\equiv v\pmod2\):   给定 \(n\),求 好树 数量.答案对 \(998244353\) 取…
题目 题意简述   link.   有一个 \(n\) 个元素的集合,你需要进行 \(m\) 次操作.每次操作选择集合的一个非空子集,要求该集合不是已选集合的并的子集.求操作的方案数,对 \(10^9+7\) 取模. 数据规模   \(n\le3\times10^4\). \(\text{Solution}\)   显然当 \(n<m\),答案为 \(0\),先特判掉.   首先列一个 naive 的 DP 方程,令 \(f(i,j)\) 为前 \(i\) 次操作选出的集合并大小为 \(j\)…
\(\mathcal{Description}\)   Link.   有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权,最大化其边权和,并保证 \(m_2\) 条边都在最小生成树中.   \(n,m_1,m_2\le5\times10^5\). \(\mathcal{Solution}\)   先保证在 \(\text{MST}\) 中的限制--指定所有边权为 \(0\).并求出此时的 \(\text{MST}\)…