正题 题目链接: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\) 解题思路 传统的思想,路径分为向上…
题意 [省选联考 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 *…
很巧妙的一个构造. 我是没有想到的. 自己的思维能力可能还是不足. 考虑先满足\(b\)对\(a\)的限制,把\(a\)的第一行和第一列设\(0\),推出这个\(a\). 接下来考虑对这个\(a\),矩阵进行一些行列加的操作满足\(\leq 1e6\)的性质. 考虑操作做时,奇偶分开加减这样的操作保证\(b\)的限制. 借用一下其他大佬的图. 如下代码因为被卡常了,所以在跑\(BellmanFord\)时没有跑完,所以其实并不保证正确性.只是能过数据而已,好无奈. [省选联考 2021 A 卷]…
垃圾福建垫底选手来看看这题. 大家怎么都写带 \(log\) 的. 我来说一个线性做法好了. 那么我们考虑枚举 \(k\) 作为翻转完的最小值. 那么构造出一个满足条件的操作,我们在 \(a_i\) 中查询一个最大的位置使 \(a_i < k\) ,那么 \(a_1\) 到 \(a_i\) 都要进行翻转,且 \(b_1 到 b_i > k\),那么这样做的次数是 \(i\) 或者 \(i - 1\)(考虑\(k\)是\(b\)且对应的\(a\)在需要翻转的区间里)的. 那么考虑对这个 \(k\…
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…
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} ) *…
正题 题目链接: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…
传送门: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}\) 解题思路 很经典的模型,首先起点和终点连一条边,然后考虑加最少的边使得有欧拉回路. 欧拉回路有两个条件,度数都是偶数很…
题面传送门 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})\),因此我们只需求出 \…
洛谷题面传送门 真·支配树不 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\),一个…
题目 题目里要求的是: \[\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…
一.题目 点此看题 二.解法 其实这道题也不是特别难吧 \(......\) 但树状数组上二分是我第一次见. 我们把冰人和火人都按温度排序,那么考虑一个分界线 \(x\) ,问题就是求冰数组 \(x\) 对应的能量前缀和 \(\tt and\) 火数组 \(x\) 对应的能量后缀和最小值 的最大值,相同答案最大化 \(x\) . 那么你把前缀和 \(/\) 后缀和看成关于 \(x\) 的函数,那么大概是这个样子的: 找到交点是不现实的,因为这个函数是不连续的.但是我们可以求出满足 \(y_1<y…
洛谷题面传送门 一道需要发现一些简单的性质的中档题(不过可能这道题放在省选 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/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 =…
考虑链的做法,显然将两部分各自从大到小排序后逐位取max即可,最后将根计入.猜想树上做法相同,即按上述方式逐个合并子树,最后加入根.用multiset启发式合并即可维护.因为每次合并后较小集合会消失,总复杂度O(nlogn).场上并没有被启发得到这个优美的贪心. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #incl…
题目传送门:这里是萌萌哒传送门(>,<) 啊♀,据说这题有个完全贪心的做法,但是要维护太多东西好麻烦的(>,<),于是就来口胡一发三分的做法. 思路很简单,假设我指定了一个x,要求通过调整,所有的成绩都最迟在第x天出. 调整到第x天的代价是很容易通过贪心计算出来的啦,复杂度线性. 然后我们考虑从大到小枚举x,每次计算出代价之后更新答案. 再然后我们大胆猜想这是一个单峰函数! 既然都单峰啦那直接三分就好啦(>,<). 实际上我不知道它是不是真的是单峰函数...但是就AC了…
题目分析: 对于一个根,假设我们对每个子树分别求出了一种答案,那么怎么合并答案是最小的呢? 首先考虑这些答案里面最大的那个数字,它肯定要融合其它组里面的最大数字.以此类推 所以最好的合并方式是,每个子树的答案从大到小排序,然后依次合并. 然后我们会发现,这个其实是可以划分子问题的,因为如果某个子树不按照这种方式划分,那么必然不会使得某个位置变小另一个位置变大,只会使得相应位置变大. 所以按子树划分下去,把堆合并就行. 代码: #include<bits/stdc++.h> using name…
在这样一场毒瘤的省选中 这道题目无疑是命题人无私的馈赠 大量精心构造的部分分,涵盖了题目中所有涉及的算法 你可以利用这道题目,对你是否能够进入省队进行初步检查 经典的模型.较低的难度和不大的代码量,能帮助你把分数收入囊中 出题人相信,这个美妙的题目,可以给拼搏于省队的逐梦之路上的你,提供一个有力的援助. By 2019十二省联考命题人 Emmm,显然不是说给我听的. 你看,两紫一黑 Day –? Loli在黑板上设置了倒计时:[距一轮____天].然而这个倒计时甚至总是忘了更新.今天(4月10日…