10 2021 档案
摘要:传送门 大家好,我是T3的良心出题人,你们看,别人造的数据又是链又是菊花,还有把链和菊花结合起来造蒲公英的 你们看我就不一样,我造的数据最水了,这数据都是nm都等于1的,这不随便过么? 我只不过是把nm都等于1的数据在每个subtask里都放了一个而已,你们为什么要骂我?你们凭什么骂我? (整活向,
阅读全文
摘要:传送门 发现它走的路径是一个环,于是就变成了计算环上两点间距离 当然细节有亿点多 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 500010 #define ll long l
阅读全文
摘要:传送门 处理 表示在 后面接 的贡献,然后按题意DP Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #def
阅读全文
摘要:传送门 好题! 先考虑如何去掉末位的0 在十六进制下末位有0等价于这个数是16的倍数 直接提出所有16不太好写,所以可以先提出所有的2 最终将2的个数模4乘回去即可 于是现在要算 提出所有2的结果 可以奇偶分治,先算出 中所有奇数的积,从所有偶数中提出一个2,再递
阅读全文
摘要:传送门 考场推式子的时候错了一个小细节导致整体爆炸 先考虑临项扰动,则 在 前仅当这样走完两者的总时间更小 即 \(a_it+b_i+(\color{red}{t}+a_it+b_i+\color{red}{1})a_j+b_j \leqslant a_jt+b_j+(\co
阅读全文
摘要:传送门 我我我不会斯特林数……导致考场上用了个 的DP推斯特林数并T飞 关于斯特林数的计算公式: 一个是: \(=\frac{1}{k!}\sum\limits_{i=0}^k(-1)^i\binom{n}{i}(k-i
阅读全文
摘要:传送门 我只知道如何优雅的爆零 当计数题让算形如 的柿子时,(尤其当 为一个计数函数)特别注意也许可以理解为对所有情况枚举子集 可以考虑设法对合法的子集进行计数 的实际意义是 这个数是否不含平方因子 于是这题就可以转化
阅读全文
摘要:传送门 又是神仙DP,参考了这里 先把题意转化为有 个管理员要放,求每个鸽笼最后一个放满的概率 发现直接做的话每列放满之后放到其它列的概率会发生变化,很难做 处理这种形如「向一些格子里放数,每个格子放满后不能再放(即一个格子放满后下一个球放到每个格子的概率会变化)」的情况: 对于每个
阅读全文
摘要:传送门 神仙题 发现 很小,肯定是要状压的,考虑怎么压 最终我们希望知道对于B的每一种形态,它在A里能匹配多少次 于是尝试枚举B的形态,对于每种形态: 对于树同构当点数较小时的一种判定/计数方法: 令 表示A中第 个点匹配上B中第 个点的
阅读全文
摘要:传送门 看到名字吓了一跳 考场上糊了一个DP,考完Yubai哥哥优化了一下,可以有60pts 令 为(DP一个递增序列)前 个数,当前这个数为 ,这个数出现的数量为 ,前 个数的和为 的方案数 于是按 \(
阅读全文
摘要:传送门 更遗憾的一个题,刚了两个半小时没刚出来 首先bitset按题意模拟可以有50pts,只记录最高的一千位乱搞可以有100pts 然后考场总是想着dijkstra,想设法让两个 级别的数比大小 于是炸上天了 最短路除了dij,还有一个容易忘的BFS 这里除了与点1以0边
阅读全文
摘要:传送门 很遗憾的题,开始写的时候还记得有单调性写着写着就忘了 所以看出来有什么特殊性质先写下来,要不然容易自闭 先考虑 怎么做 那就直接枚举答案 按权值排序,枚举一个答案后将答案左右两边的区间分别按时间排序,取前 小的 发现这个东西可以权值线段树上二分
阅读全文
摘要:传送门 能想到差分这题就差不多了……可惜我没想到 先维护出差分序列 于是每次操作可以将前面一个地方-1后面一个地方+1 整个序列的前缀和处处大于0且整个序列的前缀和为0 于是每个大于零的位置都需要 次操作才能变为零,于是操作次数可知 然后考虑最大/小体力消耗 首先所有
阅读全文
摘要:传送门 首先子序列经典DP 可以 暴力了 然后发现可以写成矩阵区间乘积 于是线段树维护 发现复杂度 ,不可过 等到考完之后仔细阅读题面,发现字符集大小只有3 于是复杂度变为 ,可以通过 Code: #include <bits/
阅读全文
摘要:传送门 初看应该是个换根DP之类 但我是从分类讨论贡献入手的 先转化为每个点的贡献是通过这个点的出发点权值比这个点小的使者数 发现能对一个点产生贡献的点只有三种位置:子树内,到根节点链上,到根节点链上的点的其它子树内 于是令 为 子树内权值比点 小的点的数
阅读全文
摘要:传送门 两种做法 第一种可以按题意模拟,dfs染色 如果一个点已经被染过了就return 这样每个点只会被染色一次,均摊 第二种考虑每个点被染色的时间 在时间轴上差分计算贡献,也是 Code: #include <bits/stdc++.h> using name
阅读全文
摘要:传送门 考场上由于策略原因打了个暴力就跑路了 DP只是简单想了想 貌似括号序列相关的方案数类的题常与区间DP有关? 考虑令 为区间 为合法括号序列的方案数 为形如 方案数 为形如 \(S
阅读全文
摘要:传送门 多测题里不要写 exit(0); 四个指针模拟,贪心选数 尽量优先选左边 枚举第一次选什么 数两两不同,所以没有后效性 为了形成回文,选第 个数的时候第 个数已经确定了,看看能不能选就行了 不能就-1 Code: #include <bits/stdc++.
阅读全文
摘要:传送门 首先可以二分出第 个数是什么 于是可以通过 的部分分 然后到这里其实就可以知道第 个数是什么以及有多少了,难点在于不好知道下一个数是什么 于是题解说它是个经典问题 首先可以知道每个 在什么范围内是最小值 然后每个
阅读全文
摘要:传送门 考场上有刚过这题但没刚出来 猜测正解应该是DP了一个 表示 时的答案 于是想这个东西怎么转移 首先可以对两类点黑白染色 如果令前面的点为白点,后面的点为黑点的话 发现最后一个黑色连通块一定是与一个白色连通块完全相连或不与白色连通块相连 特别注
阅读全文
摘要:传送门 先来个结论:如果有 个数是符合条件的,则直接将其删掉没有后效性 于是用一个栈维护这个东西,如果栈顶的 个符合要求了就删掉 如果最后栈里还有剩的元素则无解 Code: #include <bits/stdc++.h> using namespace std; #
阅读全文
摘要:传送门 补道以前的题 首先可以对每一位开个bitset记录下选这一位需要哪些饲料 然后 扫一遍就好了,注意可能会爆ull所以我开了int128 但其实有个空间复杂度更优的做法 发现保证 互不相同,所以这玩意没用 然后考虑哪些 可以被选就可以了 Co
阅读全文
摘要:传送门 初看暴力非常好打 细看貌似比较套路,处理出数组 和 表示两种位置分别分配 个廊桥时的最大停靠数 然后 合并 发现一个事情是一架飞机如果能在 的情况下产生贡献,也就一定能在 的情况下产生贡献(其实假了
阅读全文
摘要:为达成成就 「集齐省一省二省三」 奠定了坚实基础
阅读全文
摘要:注意有些形如 的子任务,一定要记得记忆化!
阅读全文
摘要:传送门 官方题解比给的题解好多了……给的题解的方法麻烦了一亿倍 关于可以任意移动的点在移动过程中与其它一些点的距离最值问题:考虑二分答案,check在满足二分到的值的情况下能否完成移动 然后给的题解的思路check时是用一个 表示两个点一个到 ,一个到 是
阅读全文
摘要:传送门 首先发现在每个矩形占据的实际上是 中的一个区间 区间之间可能存在覆盖关系,于是想用珂朵莉树 但是边分横边和纵边,我不会处理题图中在1上插入一个2的情况,于是炸了 正解的话把横边和纵边分开考虑了 首先把所有出现的向量拿出来离散化 可以利用向量叉乘实现比较角度大小 (二
阅读全文
摘要:传送门 考场上有个贪心思路,hack不掉自己就写了,结果开场一个多小时后拍出来一组数据把自己hack了…… 至于正解: ,显然状压 但问题在于仅知道上一行的0/1状态并不足以对这一行进行转移,我们还要知道上一行的矩形状态 于是考虑用01状态记录上一行的划分状态 转移考
阅读全文
摘要:
阅读全文
摘要:传送门 首先发现每个状态可以被压成一个 的二元组,分别表示空白格子和指定格子的位置 于是可以状压,复杂度 ,因为-1判错了挂了十分 其实这个方法开O2可以AC 然后正解: 貌似是处理这种地图固定,状压移动求最短
阅读全文
摘要:传送门 KMP自动机,需要预处理优化跳next的过程 特别注意CCF的arbiter算空间的时候是按MB而不是MiB算的,256MB折合下来只有244MiB多点 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3
阅读全文
摘要:传送门 考场上爆搜都写挂了…… 这个题删点之前应该先缩下点,在同一个强连通分量里的点的顺序是不计入总方案数的 至于正解…… 根据期望的线性性,每个点如果被删的话会产生1的贡献,所以删的总次数的期望就是每个点被删的概率之和 接下来就是统计每个点被删的概率 一个点被删的概率是它在它和所有能株连到它的点中
阅读全文
摘要:二维树状数组(单点修改+区间查询): Code: void upd(int x, int y, int val) { int y2=y; for (; x<=n; x+=x&-x) { for (int y=y2; y<=m; y+=y&-y) { bit[x][y]+=val; } } } int
阅读全文
摘要:传送门 考场上糊了一个 的DP,结果不会去重,回归暴力了 正解来自战神和这篇博客 首先发现一个人能给出多少球与他收到了多少球无关,所以可以以此为依据划分状态进行DP 转化一步:,即可以转化为传完球后,每个人再从手里
阅读全文
摘要:传送门 有多种颜色的序列可以交换相邻项,求最小方案数:注意同种颜色内顺序是否恒不变 序列可以交换相邻项,求最小方案数:注意如果给每个点按输入顺序编号,那最小方案数就是结果序列中逆序对的最小数量 于是问题就被转化为了求最小逆序对数量 考虑DP,令 表示三种
阅读全文
摘要:lca预处理时 if (dep[u]>=1<<i) 写成 if (dep[i]>=i<<i) 毁一生 hash<>模板类防卡处理
阅读全文
摘要:传送门 这题做的历尽坎坷 首先有个 的部分分 既然 这么小,那就枚举恰好交换 次然后组合数求好了 一次操作有两种可能,两两交换或多个轮换(瞎起名字.jpg) 枚举给二者分配多少个数以及多少次操作即可 考完尝试拓展这种方法,但花了一下午喜提10pts 然后我康到
阅读全文
摘要:错排数通项式: 简记式:\(D_n = \left[\frac{n!}{\mathrm{e}}\right]=\left\lfloor\frac{n!}{\mathrm{e}}+0.5\
阅读全文
摘要:传送门 题面里说每个元件只会被融合一次,但想着想着题就忘了这个条件了…… 首先题意可以转化到图上,即(以只考虑并为例)要求 是 的祖先或 之间由 的边相连 然后觉得是个有向图,判祖先得离线了用bitset挺麻烦的就跑路了 然而原图实际上是棵树
阅读全文
摘要:传送门 考场上决策单调性+bitset水过的,但复杂度是假的,而且没开long long 正解没空写,先咕了 无向图三元环:由度数大的点向度数小的点连边 复杂度:令每条边对复杂度的贡献为 (终点的出边个数),则 当 时,因为 的度
阅读全文
摘要:传送门 其实就是求用这些题目能拼出来的所有得分中第 大的是多少 于是 的状压很好想,但 有40 又 又是拼数还要求拼出的所有数中的第 大肯定是meet in middle啊 于是考虑用前一半数能拼出来的所有数和用
阅读全文
摘要:传送门 第一眼看是个数位DP,略慌,确定DP方案后一小时码完并过拍 但其实麻烦了,有更优策略: Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #define ll
阅读全文
摘要:
阅读全文
摘要:传送门 首先可以 预处理出每个位置在一开始时的mex值 然后枚举左端点,设法维护出每个右端点的答案 令下一次出现这个位置上数的位置为 于是删去一个点的贡献等价于将 的答案与 取min 又因为我们需要查区间和,
阅读全文
摘要:传送门 小蒟蒻写了一下午加一上午,确实是只菜鸡呢 首先考虑有哪些点可以更新当前点,盗张图(出处) 看起来能更新这个点的范围是左上角的矩形,但实际上只有一行一列 因为其它点先跳到这一行一列中再跳到当前点显然更优 于是可以过subtask2 然后决策点从矩形变成了一行一列,就可以对每行每列维护一个单调队
阅读全文
摘要:传送门 神仙题,想DP但完全不知如何入手 难点在于对状态的划分 到了某一列可行的积水体积与接下来列的最高高度有关,是向后关联的 但发现若已知前面的最大值,则积水高度肯定不能超过这个最大值,所以后面的高度只要 这个最大值就能产生贡献 于是令 \(f[i][j][p][0/1
阅读全文
摘要:传送门 觉得挺不可做的 题解思路: 先考虑加入一个数的答案上界 发现若当前已经可以拼出来的数最大为 ,方案数为 ,则再加入一个 可以将方案数增至 于是问题转化为要删去一个袋子,使方案数减少量最小,可以退背包实现 接下来找最小的 ,令当前
阅读全文
摘要:传送门 首先没有-1的情况很简单,按题意模拟建出笛卡尔树,利用树同构可以直接求解 但有了-1就不能这样写了 题解神仙思路: 发现加入一个点时栈中的元素数量其实是这个节点所有在左侧的祖先数量(要求这个点在这个祖先的右子树) 而这棵树上的二元组中第一个元素恰好是数组下标 于是一棵子树可以用一个区间表示
阅读全文
摘要:有向树与树的括号序列最小表示法,注意子树按括号序的字典序排序 树的拓扑序列计数(与给定树同构的树的数量),核心思路是对于每个子树的根节点,它与它子树内的点的相对顺序已知,只考虑这些点时只有 的排列是合法的,所以是 \(\frac{n!}{\prod siz_i
阅读全文
摘要:传送门 要求LIS和LDS无交集什么的:注意如果有交集,二者交集最大为1 尝试过求出一个LIS再删掉这些用过的数,在剩下的数中求LDS 但没有正确性,因为求的这个LIS可能恰好被所有LDS都包含了但存在不被都包含的LIS 于是考虑一个LIS中的数被多少LDS包含了 记包含下标 的 LDS
阅读全文
摘要:传送门 很好的题,我连暴力都不会打 建议复看题解 subtask1(n=1):每一轮都是独立的,A的胜率应该相等,于是列出等式 subtask2(p=q=0.5):此时胜率与剩余石子个数有关 所以令设 表示剩余n个石子A先手时A
阅读全文
摘要:传送门 一个比较显然的思路是断环为链后枚举断点,然后堆贪心check 然后考虑怎么剪枝,应该是去找断点的性质 比较显然的是断点前面仓库的钱不会运到这个仓库及以后 另一个性质是从这个仓库向下不断运的话中间不会有空的仓库 一个环,有些节点上有东西,最后要通过运送使所有节点上的物品数量相等: 先求出最后每
阅读全文
摘要:传送门 ,特别注意第二项不满足此性质 具体来说,所有奇数(包括1!)的约数个数会多1 然后就是复习了一下求约数个数和以及约数个数平方和的求法 都是积性函数所以还是上筛,但是注意用low和lowc以确保复杂度 Code: #inclu
阅读全文
摘要:传送门 挺思路的题,正解比暴力好写 对于 :全排列枚举拓扑序,考虑排在前面的点向排在后面的点连出的边的状态可以任意,于是可以统计 然后正解:状压枚举拓扑序,考虑向一个已经确定的点集中加入一个点,则这个点向已经确定的点集中连出的边都一定不能选 而其它的可以任意,于是可以
阅读全文
摘要:传送门 题面保证数据随机,所以乱搞就好 直接忽略选取任意一个的条件,最短路记录前驱 ……然后就做完了吗? 当出现类似 的时候数组尤其容易开小,应该开 而不是 写暴力的时候注意memset整个数组可能就T了 Code: #include
阅读全文
摘要:传送门 重度卡常题,还不给O2 发现看着很像矩阵优化,所以试着放到矩阵上 发现乘法可以转化为每个底数的幂次的加法,于是可以转移了 具体地,考虑矩阵乘法的实际意义,可以用初始矩阵的一列来描述一个 然后转移就很好写了, 的实际意义就是一列要乘的系数 复杂度 \(O
阅读全文
摘要:https://blog.csdn.net/qq_34940287/article/details/104219723
阅读全文
摘要:威尔逊定理: 当 为质数时, 能被 整除 应用:处理一些奇奇怪怪的式子,比如这样的及题解 逆定理正确性存疑 多重集组合(两种常见形式): 1.有 件物品,放 个盒子,盒子可以为空的方案数为 \(\binom{n+r-1}{r}\
阅读全文
摘要:https://www.cnblogs.com/xiao-xin/category/670688.html
阅读全文
摘要:传送门 暴力水过去了…… 有一个AC自动机上的解法 考场上想的是将 都扔到AC自动机上,设法用 去匹配但不太可做 发现 的后缀若是 的前缀,那从 不断跳fail指针能跳到 中的节点上 于是有想法是将询问离线,对每个
阅读全文
摘要:传送门 关于exgcd:exgcd(a, b, x, y) 可以求解一组方程 的合法解 若想求最小整数解记得 于是有50pts部分分可以exgcd求逆搭配二维前缀和来做 全分的话肯定还是二维前缀和,但没办
阅读全文
摘要:传送门 确实是个大阴间题 是个挺显然的状压,但就是没想到,看到 想到meet in middle那边去了…… 对于第二维取值范围非常有限,且这些取值都与某个标准值相差不大的情况,也可以把第二维记录为与这个标准值的差值 先令 为集合 \(s\
阅读全文
摘要:传送门 结论:度数是 的倍数的点的贡献为 0,其余的点的贡献为 1 貌似猜结论比证明更好做 关于图的染色:这里 放个链接跑路吧:这里和这里 证明过程大意(好像)是先将每个点都尽量拆成度数为 的点 由Vizing定理知这些度数为 的点一定能完成染色 然后那些差一点不
阅读全文
摘要:传送门 组合数骗了40pts,考场上再见到建议打表找规律 扔几个觉得比较有用的变换吧 这个可以推广到方程数更多的情况,可以搭配爆搜求出所有解 关于一个数的拆分方案数: (这里枚举里 的和) Code: #include <bits/stdc++.h> using namesp
阅读全文
摘要:传送门 大水题,spt上直接背包即可,但我因为太弱爆零了 树上背包当出现在每个点有概率终止DP(举个例子:从点1逃跑,在每个点有概率被抓捕)的情况时: 特别注意在当前节点的容量与字节点的容量是独立的,不能像子树合并一样直接把当前节点的dp值揉进去 否则无法正确统计从当前节点进入下层节点的概率 Cod
阅读全文
摘要:传送门 发现每个幻境可能贡献答案的总祭祀台的位置范围很好找 于是线段树维护即可,要求区间加和区间查max 卡常颇为严重,可以树剖lca+全局加1用偏移量实现卡过 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3
阅读全文
摘要:传送门 首先贪心的思路很好想 然后发现如果有 的空缺,贪心的部分会断掉 所以可以分成几块,二分出询问的区间包含了哪些段 但是只包含了一部分的不好处理 于是换个思路,考虑倍增优化贪心覆盖 考场上因为倍增的时候跳出边界了没跳出来炸掉了 考完拿拍造了几百组数据面向数据调试过了 Code: #
阅读全文
摘要:传送门 先放结论: 可以过,于是下面可以跳过了(弥天大雾 先考虑暴力,显然是贪心不断选最大的 发现如果我们令第一个大于当前体积的鱼的体积为 则直到当前体积 时候选集合才会发生变化 一个简单的思路是将能吃的鱼体积排序后二分 因为每这样做一次一定吃了
阅读全文
摘要:传送门 相对简单的数位DP,需要高精 需要注意的是类似数位DP这样的DP用记搜实现状态数可能会比刷表少很多 对于类似「为啥 1<<2 等于1啊」这样的问题,康康你存的类型是不是int,尤其注意是不是开成bool了 于是令 为由低位到高位考虑到第 位,当前不能再选
阅读全文
摘要:传送门 大水题,枚举 的大小,计算出现次数即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #define ll long long #define
阅读全文
摘要:传送门 毒瘤题 相关略掉的证明见pdf,我并没有全看完,待补吧 首先这个题有暴力hash和最小表示法的做法 然后正解,有两种做法 对于循环同构串,可以定义一种很套路的变换 那就有 \(C(x,x)=x[1]x[n]x[2
阅读全文
摘要:传送门 暴力的话其实是网络流的板子,但我没有看出来 于是想了一个贪心的部分分解法,每次取余量最多的b 正解的话 首先若是check一个固定的 ,就是check能否满流 令 为a数组从大于等于 的数的个数,则有 \(\sum\limits_{i=1}^{n}
阅读全文
摘要:传送门 观察第二个样例,发现每对斜角相同的字母能贡献出一种不同的走法 有一左上一右下这样的相同字母对就一定合法 二维前缀和来做可以 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f
阅读全文
摘要:传送门 很神的题 原图的最小生成树是确定的,但在这里不知道怎么用 给定原图最小生成树,求原图方案数的一种可能切入点: 考虑kruskal的过程,若按权值从小到大加边,则树边一定会连通两个连通块,非树边一定不影响连通性 于是可以以连通块为状态做DP了 那令 为考虑到第 \(i
阅读全文
摘要:传送门 部分分可以考虑状压后转后缀表达式再求值 中缀表达式转后缀表达式:见蓝书P52 全分不会,咕了
阅读全文
摘要:传送门 初看基本可以确定是个DP,但根本找不到可以当做状态的东西 题解思路的切入点大致是找什么东西是独立的 发现对于一个点,在它的祖先节点还有球的时候,子树外的选法独立,与子树内可以任意合并而不会引起冲突 而当这个节点已经没有球了后,其子树中的选法是独立的,同样可以任意合并而不会引起冲突 于是令 \
阅读全文
摘要:传送门 是一种套路的变式 如果不考虑祖孙关系的限制,临项扰动一下就可以得到 小的优先的策略 但现在有些点有一些前置点要考虑 先有一个结论:按比值小的贪心选点,若选到一个点时其父节点还没选,则在选中其父节点后一定会立刻选这个点 然后就可以缩点,把这些一定连续选的点缩在一
阅读全文
摘要:传送门 首先有一个三分的思路: 考虑每个指针与某个给定指针的偏角,在一分钟内为单谷函数 给它们取max还是单谷函数,于是可以是三分 check的时候貌似可以set优化,%zjx,我就先咕了 三分假了,每个指针的函数最多可以有两个拐点 所以可以退火,不过退720次着实有点危 正解的话考虑二分 发现对于
阅读全文
摘要:传送门 有几档暴力不会写,巨丢人 的话两个人之间的距离会覆盖整棵树上所有可能的路径,所以就是求所有树上路径长度的总和 成链且 为奇数的话,集中点肯定是中位数那个点 考场上想偏了,只会用这个性质求一些给定的人应该集中在哪个点 但实际上可以枚举中位数这个点,求出一共有多少匹配
阅读全文
摘要:传送门 完全没思路,并认为这个问题没有 以下的解法 遂糊了个暴力上去随便优化了一下,然后过了…… 正解的话是random_shuffle构造随机数据,然后把第二个班看成负容量做背包 途中舍弃偏离0过远的决策,显然是对的而且没法卡 Code: #include <bits/st
阅读全文