luoguP6624 [省选联考 2020 A 卷] 作业题(莫比乌斯反演,矩阵树定理) Luogu 题外话: Day2一题没切. 我是傻逼. 题解时间 某种意义上说刻在DNA里的柿子,大概是很多人学莫反做的第一题的套路. $ \phi \cdot 1 = id $ . 然后直接转化: \[\begin{aligned} & \sum_{T} ( ( \sum w_{e_i} ) * gcd( w_{e_i} ) ) \\ = & \sum_{T} ( ( \sum w_{e_i} ) *…
题面传送门 u1s1 这种题目还是相当套路的罢 首先看到 \(\gcd\) 可以套路地往数论方向想,我们记 \(f_i\) 为满足边权的 \(\gcd\) 为 \(i\) 的倍数的所有生成树的权值之和,\(g_i\) 为边权的 \(\gcd\) 恰好为 \(i\) 的所有生成树的权值之和,那么显然 \(f_i=\sum\limits_{i\mid j}g_j\),莫反一下可得 \(g_i=\sum\limits_{i\mid j}f_i\mu(\dfrac{j}{i})\),因此我们只需求出 \…
题意 [省选联考 2020 A 卷] 组合数问题 想法 自己在多项式和数论方面还是太差了,最近写这些题都没多少思路,看完题解才会 首先有这两个柿子 \(k*\dbinom{n}{k} = n*\dbinom{n - 1}{k - 1}\) \((1 + x) ^ n = \sum_{i = 0}^{n}\dbinom{n}{i}x^i\) 然后对于题目中所要求的多项式\(f(x)\)我们自然把他拆开,对于一个单个\(k\)对答案贡献 \(\sum_{i = 1}^{m}a_i * (k^i *…
luoguP6623 [省选联考 2020 A 卷] 树(trie树) Luogu 题外话: ...想不出来啥好说的了. 我认识的人基本都切这道题了. 就我只会10分暴力. 我是傻逼. 题解时间 先不想用什么维护,拆分成如下操作: 插入,合并,全局异或和,全局加一. 全局加一咋做? Trie树变成从低位到高位记录就好. 全局加一就是直接反转,看到进位(这一位存在1方向节点变成0方向节点)就递归下去继续反转. 然后就没了. #include<bits/stdc++.h> using namesp…
luoguP6620 [省选联考 2020 A 卷] 组合数问题(斯特林数) Luogu 题外话: LN切这题的人比切T1的多. 我都想到了组合意义乱搞也想到可能用斯特林数为啥还是没做出来... 我怕不是除了数据结构啥也不会. 我是傻逼. 题解时间 不弄纯柿子推导,来点阳间的组合意义证明. 首先毫无疑问拆成: $$ \sum_{i=0}^{m} a_{i} \sum_{k=0}^{n} k^{i} \cdot x^{k} \cdot \binom{n}{k} $$ 然后考虑如何求 $$ \sum…
传送门:QAQQAQ 题意:自己看 思路:正解应该是线段树/trie树合并? 但是本蒟蒻啥也不会,就用了树上二次差分 (思路来源于https://www.luogu.com.cn/blog/dengyaotriangle/solution-p6623) 首先我们企图树形DP,但是发现每一个元素往上推一格都会+1,所以我们对于二进制每一位考虑贡献. 顶点u对他祖先的二进制第k位贡献,可能是0可能是1,但不断+1时变化是一个混循环,刨掉最开始的,后面都是规则的循环,2^k个0,2^k个1.所以我们可…
正题 题目链接:https://www.luogu.com.cn/problem/P6628 题目大意 给出\(n\)个点的一张完全无向图,\(i\sim j\)的边权是\(|i-j|\). 然后给出\(m\)条必经边,和起点\(s\). 求对于每个终点经过所有必经边的最短路径. \(1\leq n\leq 2500,0\leq m\leq \frac{n(n-1)}{2}\) 解题思路 很经典的模型,首先起点和终点连一条边,然后考虑加最少的边使得有欧拉回路. 欧拉回路有两个条件,度数都是偶数很…
题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项式转成下降幂多项式.这一步可以做到\(O(mlogm)\),(模板)但是这题不需要,这个后面再说.假设现在已经得出了f的下降幂多项式的系数\(b_i\),则: \[\begin{align} f(k)&=\sum_{i=0}^m b_ik^{\underline i}\\ ans&=\sum_…
洛谷 P6622 [省选联考 2020 A/B 卷] 信号传递 题解 某次模拟赛的T2,考场上懒得想正解 (其实是不会QAQ), 打了个暴力就骗了\(30pts\) 就火速溜了,参考了一下某位强者的题解 大概懂了一点思路,有亿点毒瘤... 数据范围是\(m<=23\) 的 明显是个状压么!!! 数组代表意义 令\(f[i]\)表示,当已经确定的信号站集合为\(i\)时,此时已确定花费的最小值是多少. 此时考虑两个转移: 将左向右方向中继变换为先由初始节点中继到\(0\)号节点,再由\(0\)号节…
luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp) Luogu 题外话: 我可能是傻逼, 但不管我是不是傻逼, 我永远单挑出题人. 题解时间 看数据范围可以确定状压dp. $ dp[s] $ 表示s集合去代替前几个数的话现有部分的最小结果. 将数组转化成数字之间的带权图,预处理集合和点之间的单向边数量就能解决. 对于一对相邻的转化完之后数 $ a,b $ ,贡献为 \[-a+b(a<b)\\ ka+kb(a>b) \] 由此状压dp得出解. 时间复杂度实际上比 $…
luoguP6619 [省选联考 2020 A/B 卷]冰火战士(线段树,二分) Luogu 题外话1: LN四个人切D1T2却只有三个人切D1T1 很神必 我是傻逼. 题外话2: 1e6的数据直接io? 这野蛮至极你知道吗. 出题人这是要向全国人民谢罪的. 题解时间 70pts: 求最大的 $ min(presum0[i],sufsum1[i]) $ . 一个前缀和,一个后缀和. 二分+树状数组可以找到答案. 对于输出最大温度,再二分一次. $ O( n log ^ {2} n ) $ . 1…
很巧妙的一个构造. 我是没有想到的. 自己的思维能力可能还是不足. 考虑先满足\(b\)对\(a\)的限制,把\(a\)的第一行和第一列设\(0\),推出这个\(a\). 接下来考虑对这个\(a\),矩阵进行一些行列加的操作满足\(\leq 1e6\)的性质. 考虑操作做时,奇偶分开加减这样的操作保证\(b\)的限制. 借用一下其他大佬的图. 如下代码因为被卡常了,所以在跑\(BellmanFord\)时没有跑完,所以其实并不保证正确性.只是能过数据而已,好无奈. [省选联考 2021 A 卷]…
一.题目 点此看题 二.解法 其实这道题也不是特别难吧 \(......\) 但树状数组上二分是我第一次见. 我们把冰人和火人都按温度排序,那么考虑一个分界线 \(x\) ,问题就是求冰数组 \(x\) 对应的能量前缀和 \(\tt and\) 火数组 \(x\) 对应的能量后缀和最小值 的最大值,相同答案最大化 \(x\) . 那么你把前缀和 \(/\) 后缀和看成关于 \(x\) 的函数,那么大概是这个样子的: 找到交点是不现实的,因为这个函数是不连续的.但是我们可以求出满足 \(y_1<y…
正题 题目链接:https://www.luogu.com.cn/problem/P7514 题目大意 给出\(n\)个卡牌有\(a_i/b_i\),开始都是\(a_i\)朝上,将不超过\(m\)张卡牌变为\(b_i\)面朝上,使得朝上的数字中最大值减去最小值最小. \(3\leq n\leq 10^6,1\leq m<n,1\leq a_i,b_i\leq 10^9\) 解题思路 虽然数据比较水,但是题目也是一道比较水的贪心题. 先离散化然后考虑暴力点的想法.枚举最大值和最小值\(l,r\),…
正题 题目链接:https://www.luogu.com.cn/problem/P7518 题目大意 给出\(n\)个点的一棵树,每个点上有不大于\(m\)的数字. 然后给出一个长度为\(c\)的各个位数不同的序列,每次询问一条路径上找到一个最大的\(k\)使得该序列的存在\(1\sim k\)的子序列. \(1\leq n,q\leq 2\times 10^5,1\leq c\leq m\leq 5\times 10^4,1\leq w_i\leq m\) 解题思路 传统的思想,路径分为向上…
洛谷题面传送门 真·支配树不 sb 的题. 首先题面已经疯狂暗示咱们建出支配树对吧,那咱就老老实实建呗.由于这题数据范围允许 \(n^2\)​ 算法通过,因此可以考虑 \(\mathcal O(n^2)\)​ 地建立支配树,具体来说我们枚举每个点 \(x\)​,将这个点暂时地从图中删除,如果对于图中另一个点 \(y\)​ 满足删除 \(x\) 后 \(1\) 不能到达 \(y\),那么 \(x\) 就在 \(y\) 的支配集中,这样我们再对整个 DAG DFS 一遍求出每个点的 DFS 序,然后…
题面传送门 emmm--怎么评价这个题呢,赛后学完差分约束之后看题解感觉没那么 dl,可是现场为啥就因为种种原因想不到呢?显然是 wtcl( 先不考虑"非负"及" \(\le 10^6\) "这两条件,考虑什么样的矩阵 \(A\) 能够生成 \(B\),我们首先考虑矩阵 \(A\) 的一个特解 \(A'\):第一行和第一列都是 \(0\) 的情况,显然 \(A'\) 可以通过一遍反着递推求出.接下来考虑怎样通过 \(A'\) 推出所有符合要求的矩阵 \(A\),一个…
垃圾福建垫底选手来看看这题. 大家怎么都写带 \(log\) 的. 我来说一个线性做法好了. 那么我们考虑枚举 \(k\) 作为翻转完的最小值. 那么构造出一个满足条件的操作,我们在 \(a_i\) 中查询一个最大的位置使 \(a_i < k\) ,那么 \(a_1\) 到 \(a_i\) 都要进行翻转,且 \(b_1 到 b_i > k\),那么这样做的次数是 \(i\) 或者 \(i - 1\)(考虑\(k\)是\(b\)且对应的\(a\)在需要翻转的区间里)的. 那么考虑对这个 \(k\…
题目链接: [十二省联考2019]异或粽子 求前$k$大异或区间,可以发现$k$比较小,我们考虑找出每个区间. 为了快速得到一个区间的异或和,将原序列做前缀异或和. 对于每个点作为右端点时,我们维护出与他异或起来最大的左端点并将这组信息用结构体存起来插入堆中. 那么最大值就是堆顶那组(假设右端点为$r$),但考虑到次大值可能出自同一个右端点,所以在弹出堆顶后还需要将以$r$为右端点的次大值插入堆中. 那么如何求出以$r$为右端点的最大值和次大值? 我们对序列每个数为一个版本建可持久化$trie$…
洛谷题面传送门 一道需要发现一些简单的性质的中档题(不过可能这道题放在省选 D1T3 中偏简单了?) u1s1 现在已经是 \(1\text{s}\)​ \(10^9\)​ 的时代了吗?落伍了落伍了/ll 首先我们考虑 \(f(i,G)\)​ 是个什么东西,显然对于 \(x>i\)​ 的 \(x\)​ 肯定就不可能有贡献了对吧,因为扫描到 \(x\)​ 时 \(i\)​ 已经从图中删去了,而扫描到 \(i\)​ 时答案肯定会有 \(1\)​ 的贡献,因此我们不妨先给所有 \(h(G_i)\)​…
正题 题目链接:https://www.luogu.com.cn/problem/P7515 题目大意 有一个\(n*m\)的矩形\(A\),然后给出一个\((n-1)*(m-1)\)的矩形\(B\)满足 \[B_{i,j}=A_{i,j}+A_{i+1,j}+A_{i,j+1}+A_{i+1,j+1} \] 求能否构造合法矩形\(A\)使得\(0\leq a_{i,j}\leq 10^6\) \(1\leq T\leq 10,1\leq n,m\leq 300,0\leq b_{i,j}\le…
正题 题目链接:https://www.luogu.com.cn/problem/P6624 题目大意 \(n\)个点的一张图,每条边有权值,一棵生成树的权值是所有边权和乘上边权的\(gcd\),即 \[val(T)=\left(\sum\limits_{i=1}^{n-1} w_{e_i}\right) \times \gcd(w_{e_1},w_{e_2},\dots,w_{e_{n-1}}) \] 求所有生成树的权值和 解题思路 首先要知道一个东西\(\varphi*I=id\),于是我们…
正题 题目链接:https://www.luogu.com.cn/problem/P6620 题目大意 给出\(n,x,p,m\)和一个\(m\)次多项式\(f\)求 \[\sum_{k=0}^nf(k)\times x^k\times \binom{n}{k} \] 答案对\(p\)取模. \(1\leq n\leq 10^9,1\leq m\leq 1000\) 解题思路 什么混凝土数学题 首先我们发现这个组合数\(\binom{n}{k}\)处理的十分难受,有一个下降幂的结论正好可以把这个…
考虑到一件事情首先\(u -> u\)是可行的. 所以其实对于\(f(u,G')\) 只要考虑\([1,u]\)的点. 那么考虑其条件等价于\(u -> i\) 和 \(i -> u\) 都不经过\([1,u)\)的点. 不然我们显然可以构造出一种情况,使得在路径上某个点被删掉. 那么考虑我们对全局进行一个答案的求. 考虑我们设\(g(x,y)\) 满足给定条件. 那么接着考虑我们的这个边的条件. 我们只要求出这个\(i -> j\)限定只能经过\([k + 1,n]\)这些点的最…
大概是一眼看出来是这个给定序列在树上序列上按顺序跑最大匹配. 然后考虑维护向上和向下的链的值. 大概的做法是用倍增维护,考虑\(f_{u,i}\)是\(c_u\)在序列里的位置向后匹配\(2^i\)位的从\(u\)向根走的树上位置 这样就做完了\(u->lca\)的部分,然后\(lca->v\)考虑二分答案上跳. 记录\(g_{u,i}\)是\(c_u\)在序列里的位置向前匹配\(2^i\)位的从\(u\)向根走的树上位置 考虑二分\(mid\),找出\(v\)的祖先里的第一个\(c_{f_v…
这是一篇极其简单连像我这样省三参加不了省选的蒟蒻都能看懂的题解 前置知识: 倍增LCA  二分 栈 题意 PS:这是一篇完全面向初学者的题解,会非常细,大佬请无视 题目传送门 没有思路的时候, 我们往往可以从简单的情况下手, 比如一条链 我们记Pi为第i个需要搜集的宝石, S为起点, T为终点. 不妨先假设我们有一条链, 每个节点指向下一个要搜集的宝石(向上), 也就p1指向向上最近的一个p2, p2指向p3(为什么是最近,读者可自行思考) 这个时候S是第一个要搜集的宝石, 我们考虑从S一路沿链…
/* dp维护整体的概率, 每次相当于回退一格然后重新dp一格 */ #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<queue> #define ll long long #define M 202 #define mmp make_pair using namespace std; int read() { int nm =…
题面 传送门 题解 我们先把它给前缀异或和一下,然后就是要求前\(k\)大的\(a_i\oplus a_j\).把\(k\)乘上个\(2\),变成前\(2k\)大的\(a_i\oplus a_j\),最后答案除以一个\(2\)就可以了.显然\(a_i\oplus a_i=0\),所以并不会影响答案 我们开一个堆,存\((i,k)\)表示对于\(a_i\)来说,第\(k\)大的\(a_i\oplus a_j\)的值,然后每次把\((i,k+1)\)扔进堆里就可以了 //minamoto #incl…
题目链接 我们可以把棱柱拆成有\(n\)条高的矩形,尝试递推. 在计算的过程中,第\(i\)列(\(i\neq n\))只与\(i-1\)列有关,称\(i-1\)列的上面/下面为左上/左下,第\(i\)列的上面/下面为右上/右下. 我们可以发现,右上可选的颜色数与左上和右下是否同色有关,右下同理,那就记\(f[i][0/1][0/1]\)表示左上与右下是否同色,左下与右上是否同色. 但是第\(n\)列和第\(1\)列不能同色,最后怎么算答案? 不知道第\(n\)列状态算不了,所以我们还要记第\(…
题目链接 题目大意:求$(\sum\limits_{i=0}^n C_{nk}^{ik+r})\ mod \ p$的值. --------------------- 讲真,一开始看到这个题我都没往DP方面想,以为是什么大力推式子的数学题. 设$f_{i,j}$表示考虑前$i$个物品,选出的物品$mod \ k=j$的方案数.最后输出$f_{n,r}$. 易得转移方程: $f_{i,j}=f_{i-1,j}+f_{i-1,j-1}$ $f_{i,0}=f_{i-1,0}+f_{i-1,k-1}$…