\(\mathcal{Description}\)   Link.   自己去读题面叭~ \(\mathcal{Solution}\)   首先,参悟[样例解释 #2].一种暴力的思路即为钦定集合 \(S\) 内的位置都合法,容斥计数.其中对于每条纸带的每个位置,有三种情况(令 _ 为"保持不变",注意没有被机器人经过的位置都有这种修改): 同时存在 _ 和 *:或者同时存在 0 和 1:只能为空,方案数为 \(1\): 否则,存在(_ 或 *)且存在(0 或 1):只能为空或 01…
\(\mathcal{Description}\)   Link.   这是一道通信题.   对于长度为一个 \(n\),仅包含字符 X, Y, Z 的字符串 \(s\),将其中 \(n\) 个字符按任意顺序删去,定义删除方案的权值为在子串 XYZ 中删除 Y 的次数.实现两个函数: void Anna(int N, std::vector<char> S),获取字符串信息,传递不超过 \(7\times10^4\) 个 01 位用于通信: void Bruno(int N, int L, s…
\(\mathcal{Description}\)   Link.   呐--不想概括题意,自己去读叭~ \(\mathcal{Solution}\)   如果仅有 1. 3. 操作,能不能做?   --简单整体二分.   如果仅有 1. 2. 操作,能不能实时维护每个位置还剩下多少人?累计走了多少人?   --吉司机线段树.   所以,离线下来,把上两个重工业揉在一起就能粗暴地过掉这道题√ 复杂度 \(\mathcal O(n\log^2n)\)(\(n,m,q\) 同阶).   有 \(\m…
\(\mathcal{Description}\)   Link.   给定一棵含 \(n\) 个结点的树.称点集 \(S\) 到结点 \(u\) 的会合距离为 \(\sum_{v\in S}\operatorname{dist}(u,v)\).对于 \(|S|=1,2,\dots,n\),求使得满足 \(S\) 一定且 \(S\) 到 \(u\) 的会合距离最小时,可能选取的 \(u\) 的个数的最大值.   \(n\le2\times10^5\). \(\mathcal{Solution}\…
\(\mathcal{Description}\)   Link.   平面上有 \(n\) 个互不重合的点 \((x_{1..n},y_{1..n})\),求其两两曼哈顿距离的前 \(m\) 小值.   \(n,m\le2.5\times10^5\). \(\mathcal{Solution}\)   会做,但不完全会做.   数前 \(k\) 小的一种技术是:将解大致分类,在每类中维护最优解,一起放入堆中迭代.   应用到本题,按 \((x,y)\) 的二维偏序排序后,对于每个点,尝试维护其…
\(\mathcal{Description}\)   Link.   给定序列 \(\{(a,b)_n\}\),\(q\) 组形如 \((l,r,c,d)\) 的询问,求 \[\Big|\{i\in[l,r]~\big|~a_i\oplus c\le \min\{b_i,d\}\}\Big| \]   \(n,q\le10^5\),\(a,b,c,d<2^{24}\). \(\mathcal{Solution}\)   CDQ 不熟练欸--   在 \(i\) 的限制条件中,最离谱的应该是 \…
[题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现,这道理可以用打马后炮别的方式来理解. 先放松一点条件,假如位运算只有一种,定位某一颗生成树,那么可以知道 \[ w(T)=\oplus_{w\in W} w \] 写成生成函数的形式,对于每条边就是 \[ h((i,j))=[\exist e=(i,j,w)]x^w \] 现在重边可以看做一条边了…
\(\mathcal{Description}\)   Link.   给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率随机.求 \(\{b_n\}\) 中 LIS(最长上升子序列)的期望长度.对 \(10^9+7\) 取模.   \(n\le6\),\(a_i\le10^9\). \(\mathcal{Solution}\)   欺负这个 \(n\) 小得可爱,直接 \(\mathcal O(n!)\) 枚举 \(…
题意 题目链接 Sol 设\(f[i][j]\)表示前\(i\)个位置中,以\(j\)为结尾的方案数. 转移的时候判断一下\(j\)是否和当前位置相同 然后发现可以用矩阵优化,可以分别求出前缀积和逆矩阵的前缀积(这题的逆矩阵炒鸡好求) 这样就可以\(n*10^3\) 发现相邻两个矩阵只有一行不同,那么其他的可以直接copy. 就可以做到\(n*10^2\)了. #include<bits/stdc++.h> #define Pair pair<int, int> #define M…
Description 共 \(T\) 组数据.对于每组数据,给定 \(a, b, n\),求 \(\sum_{i = 1}^{n} \sum_{j = 1}^{n} \gcd(a^i - b^i, a^j - b^j)\),并取一个让人迷惑的模数 \(10^9 + 9\). 题目保证 \(\gcd(a, b) = 1\) 且 \(1 \leq T \leq 10, 1 \leq n \leq 10^7, 1 \leq a < b \leq 10^9\). Solution 因为笔者太蒻赛时并没…