03 2022 档案

摘要:传送门 是猫树分治的板子题 但是直接扫描线比猫树分治少个 log 直接猫树合并的话复杂度 O(nlog2n) 注意使用 lcp(x, y)=x>>lg[x^y] 时 x,y 都是线段树上的节点编号 也就是说如果下标从 0 开始的话这里的节点编号应该是 \(l+bln, r+b 阅读全文
posted @ 2022-03-31 20:22 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 是区间加/区间覆盖/区间历史最值的板子题 考虑合并加法标记队列: his_mx[v]=max(his_mx[v], mx[v]+his_add[u]); his_add[v]=max(his_add[v], add[v]+his_add[u]); mx[v]+=add[u]; add[v]+ 阅读全文
posted @ 2022-03-31 18:12 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 赛时觉得连续段这样的东西是不太能 DP 的,遂爆零 首先将左部点重排为 ai 单调增 令 fi,j 为考虑了前 i 个左部点,右部最终选入环中的点形成了 j 个连续段方案数(可以为单点) 那么转移考虑向右部加入 aiai1阅读全文
posted @ 2022-03-31 16:04 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 神奇题目。发现合法的最小串只有 7 种。KMP。 代码鸽了。 阅读全文
posted @ 2022-03-30 22:10 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 十分优美的解法,有被气震撼到 我先后尝试了使每个子树权值和均相等(无法处理度数为 2 的点) 固定一个度数为 1 的点权为 a,及一个相邻点权为 b,则其余点权均可以唯一表示为 k1a+k2b 的形式 然后发现可能解出 k1=k2=0 的情况(我先前认 阅读全文
posted @ 2022-03-30 14:21 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 后缀数组(倍增排序?)还能这么玩,长见识了 发现这个异或是作用在下标上的,所以基本上没什么可以用的贪心策略 那么直接说正解: 令 f(s,x)=six 那么若已知所有的 xf(s,x)[0:2k11] 为关键字的排 阅读全文
posted @ 2022-03-30 10:27 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 首先有一个 O(n2) 的 DP fi+1=j=1mex(j,i)fj 那么考虑怎么优化这个 DP 容易想到用线段树取维护这个 mex 那么我们每次要加入一个点 i,原来满足 \(\operator 阅读全文
posted @ 2022-03-30 08:24 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 个人感觉还是挺有思维难度的 首先发现 n 为奇数时答案为 2 然后发现就是要找 n0(modk)(2k)nk2(modk)(2k)同时还要满足 \(\frac{k(k+1)}{2}\leqsl 阅读全文
posted @ 2022-03-29 19:26 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 首先容易想到一个 O(nnlogn) 的根号分治可以处理 |s|>ns 但是串长 n 的部分就不会做了 那么这其实不是个字符串题 关于树上多模式串匹配的一种 O(n|s|ω)阅读全文
posted @ 2022-03-29 16:15 Administrator-09 阅读(9) 评论(0) 推荐(1) 编辑
摘要:传送门 AGC010E Rearranging 发现后手无论如何重排,不互质的数的相对位置是不变的 将不互质的数连 前后 的边,那么后手的操作相当于优先队列实现的拓扑排序 而先手的操作相当于为这些边定向 发现每个点双中的边是相互独立的 那么在每个点双中定向出一棵字典序最小的生成树即可 复杂 阅读全文
posted @ 2022-03-29 14:42 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先发现(除了第一次)每个点一定知道是从哪边过来的 那么一次询问至少能让深度上升 1 再考虑怎么让深度多上升一些 那么多走几步之后可以通过始/终深度得到 lca 的深度 那么走 k 步期望上升 \(\frac{1}{2}\times 1+\frac{1}{4}\times 2+\fr 阅读全文
posted @ 2022-03-29 14:36 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 考虑线段树上位置 i 维护 t=i 时的答案 那么可以从后往前 DP 转移是显然的 红灯的区间赋值为下一次绿灯的答案即可 复杂度 O(nlogn) 点击查看代码 #include <bits/stdc++.h> using namespace std; #defi 阅读全文
posted @ 2022-03-29 14:26 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 神仙题,不会做 在经过一番愉快的猜题意之后…… 发现这个限制长的很奇怪 出题人给出的思路引入大概是发现这样的话每个区间连出边来都具有传递性 然后发现等价于前后缀都有传递性 然后发现等价于 DAG 自身和补图都有传递性 然后爆搜发现有 n! 个 然后发现 DAG 和排列的对应关系 然后 阅读全文
posted @ 2022-03-27 21:09 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 做的挺来气的 第一步是愉快的猜题意 手模 25=32 种情况之后可以发现两个棋子可以在同一个节点上 那么这样的话所有棋子之间是独立的 但是怎么合并所有棋子之间的贡献呢? 因为只考虑一个棋子的话,后出现连续段的人必死 但若有多个棋子的话这个棋子可能在之后继续产生影响 那么“所以两个人 阅读全文
posted @ 2022-03-27 20:56 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 神仙题,并且我有理由怀疑是新一代 lxl 搞的 LCT 不支持子树加! 发现 LCT 能且仅能维护出这个连通块,但无法维护和修改相关的任何信息 那么考虑不用 LCT 直接放题解神仙思路好了 将每个同色连通块中深度最浅的点称作 管辖点 那么每次对同色连通块的修改对应的是这个连通块管辖点 dfs 阅读全文
posted @ 2022-03-27 18:12 Administrator-09 阅读(11) 评论(0) 推荐(0) 编辑
摘要:传送门 好题,但还没细想就开始讲题就是在浪费题 操作是可逆的 设 fi,j 表示能到达第 i 个房间的人数恰好为 j 时,前 i 个房间最多有多少人 转移分类讨论 因为几乎没有任何地方是自己想的所以题解就水了 如果某天再来看这个题的话记得去膜拜yspm的题解 点击查看代码 #incl 阅读全文
posted @ 2022-03-26 20:45 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 神仙题 核心切入点在于将题意转化为若干个变量在模周期 T 意义下同余 考虑这 m 次观察中,我们可以根据同一个灯的两个不都为 0 的剩余时间找到关于这两次观察的关系 第 i 次和第 j 次观察,示数为 x,y \(i+x\equiv j+y\pmod 阅读全文
posted @ 2022-03-26 19:42 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 关于我在 NOI Online 开始前 3 分钟才看出这题做法,于是就没写完这件事 发现点数 >n 的颜色数不超过 n 个 发现 =i[i] 将点数较多的颜色称为 丰富的 那么丰富的颜色之间的 阅读全文
posted @ 2022-03-26 17:37 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门  OI  long long  点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 200010 #define ll 阅读全文
posted @ 2022-03-26 14:21 Administrator-09 阅读(9) 评论(0) 推荐(0) 编辑
摘要:传送门 把 !isinc 打成 isinc 没有看出来(或者忙于代码没交上没有看?)挂了十分 只要是检查了应该都能查出来吧…… 但是交上去的代码就是错成了这样个鬼样子 正解: 其实能想出来开桶再排序的暴力应该能意识到…… 考虑按会做的题数从大到小加入一个人 对每道题维护一个 ti 为一个会 阅读全文
posted @ 2022-03-26 14:18 Administrator-09 阅读(9) 评论(0) 推荐(0) 编辑
摘要:传送门 读错题花了一点时间 发现可以扫描线,每次找最大的单调栈中的 t 满足 ataibt>bi,对区间 [t+1,i] 产生 1 贡献 那么线段树可以做到 O(nlogn) 点击查看代码 #include <bits/stdc++. 阅读全文
posted @ 2022-03-26 14:16 Administrator-09 阅读(8) 评论(0) 推荐(0) 编辑
摘要:传送门 看完题解十分想锤墙 考虑对公差根号分治 当公差 dm 时,可以枚举公差 那么对每个数考虑若这个数在等差数列中的话那么这个等差数列的第 1 项是多少 对这个东西开桶求众数即可 当 d>m 时,可以枚举首项 那么向后扫 \(\sqrt 阅读全文
posted @ 2022-03-25 16:04 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 首先可以分析转移路径做到 O(k(nk+1))=O(n2nk) 然后就不好优化了 网格图上的转移路径还有一大性质是可以分段转移 由库默尔定理知若 k1=2t,则仅有 (k10),(k1k1) 是有值的 那么分成 \(\l 阅读全文
posted @ 2022-03-25 15:13 Administrator-09 阅读(7) 评论(0) 推荐(0) 编辑
摘要:传送门 一个节点的 G 值为子树内子集数减去子树内 lca 不是它的子集数 有点好奇原题是啥?搬题人忘记删的数据范围貌似暗示了是个有多次询问的题 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f 阅读全文
posted @ 2022-03-25 15:09 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 貌似是扩展 Catalan 数 公式为 2nk1((n+k2k1)(n+k2k2)) 记得去做 冒泡排序 正解做法与之类似,但没时间做了 思路 link 我难以形容清楚 阅读全文
posted @ 2022-03-24 20:22 Administrator-09 阅读(7) 评论(0) 推荐(0) 编辑
摘要:传送门 发现这是个选择排序 发现不算 vis 的话操作数是顺序对数 考虑这个 vis: 发现就是进行了交换的轮数 考虑对一个长度为 n 的排列做选择排序 那么发现做到位置 iai=minni,后面那个东西是前缀最小值 证明考虑只会将大数换进来 那么考虑每个位置 \( 阅读全文
posted @ 2022-03-24 20:18 Administrator-09 阅读(6) 评论(0) 推荐(0) 编辑
摘要:传送门 赛时大概是脑子坏了 直接 DP 的话需要分层图而且值域大的离谱 首先发现给定两种操作相当于两个基向量 那么除去这两个向量共线的情况,所有点都可以由这两个向量唯一表示成 xa+yb 那么可以转换坐标系 将上面的点写成 (x,y),那么现在变成了一个网格 阅读全文
posted @ 2022-03-24 20:11 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 然而赛时并不会 考虑证明当 AnAn1+2 时先手必胜 若将 An 移至 An1 左边形成的局面都是先手必胜,则可以移到 An1+1,这样对手接下来就只能留给你一个必胜局面了 若将 An 移至 \( 阅读全文
posted @ 2022-03-24 20:02 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:签到 序列计数问题 [UNR #2] 梦中的题面 怎么都搞这个 打 nm 过 nm 爷就是要打锤子 那么首先有一个经典容斥,钦定超过限制的桶 那么就有 \[ans=\sum\limits_s(-1)^{|s|}\binom{n+m+(c-1)|s|-\sum\limits_{i\in s}b^i}{ 阅读全文
posted @ 2022-03-23 18:55 Administrator-09 阅读(24) 评论(0) 推荐(0) 编辑
摘要:传送门 好题! 首先有一个 O(n22n) 的做法是每次枚举两个度数为 0 的点连边 然后就完全没思路了 啊确实不是人想的 那么这个题解在说什么呢? 猜测在连上虚边后每个合法的环和链的方案唯一对应原图中一个匹配 那么证明一下:发现若强制虚边必选,那么环和链的每个方案在删/加虚边的转换下是 阅读全文
posted @ 2022-03-22 21:43 Administrator-09 阅读(13) 评论(0) 推荐(0) 编辑
摘要:传送门 一个我以为的转化是将同色连通块缩点 那么就是求最少用多少个白点可以将所有黑点连通 然而一个格子可以被加两次再减一次,所以就假了 那么观察(?)发现操作次数 3,证明见 3 时的构造方法 为 0 和 1 直接算黑连通块个数即可 为 2 检查是否存在一个白连通块连通了 阅读全文
posted @ 2022-03-22 17:24 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 我脑残了判存在只会暴力 其实压位之后可以判子集 那么就有一个 O(nm2nm) 的暴力了: 令 fs 为状态为 s 是否包含了给定图案 令 dps 为一个人放棋子后状态为 s 这个人是否必胜 转移就按定义转移即可,可以有 50 pts 然后注 阅读全文
posted @ 2022-03-22 17:17 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 打表发现 f(i,j)=f(igcd(i,j),jgcd(i,j)) 然后发现当 x+y=2kf(x,y)=k 那么枚举 i,枚举 gcd,枚举 t,树状数组修改 复杂度均摊下来是 \( 阅读全文
posted @ 2022-03-22 17:00 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 因为想了一个小时所以还是写一下 首先有一个直接树形 DP 的思路,但是数太大了处理不了 那么考虑用一个数表示出其它所有数,这些数都必须是整数 令单位 1 为 t,根节点为 kt 那么将每个节点表示为 yx,发现 k 必须是所有 x阅读全文
posted @ 2022-03-20 22:05 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 因为在我还没有完全想到做法时 B 哥把做法喊出来了所以还是写一下 发现最初的蛋糕大小是已知的 发现第一步的切法是固定的 发现若切出了一块给定序列中有的蛋糕,可以直接从原序列中删掉这块蛋糕 发现若没有,只能按固定策略递归切下去 若切出了一个大小为 0 的蛋糕则无解 那么 dfs 树高为 log 阅读全文
posted @ 2022-03-20 21:59 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 所以 yyl 是谁啊 正解比较神仙: 发现这个带权重心的子树和一定 sum2 因为要找深度最小的所以一定 >sum2 那么如果我们能确定某个点在这个重心的子树中 那重心就是这个点到根的路径上第一个子树和 \(>\frac 阅读全文
posted @ 2022-03-20 17:49 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 以为是个神仙题然后战神半分钟切了((( 首先发现这个 k 是来搞笑的,用前缀和把它弄没 然后移项发现现在式子长这样: \[\sum\limits_{j=0}^{d-1}(pre_{p_2+d\times j+d-1}-pre_{p_2+d\times j-1})\sum\limits 阅读全文
posted @ 2022-03-19 19:54 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 真·遇到钓鱼题就只会被钓 因为官方题解不太好找所以放一下官方题解 作者: 程泽瑞 题目简述 一个环上有n个点,要求任意连续的(k+1)个点不同色,求最少颜色数。 敏珂同学会给你一个答案,你只需要判断这个答案是大了/小了/正好/无法判断。 数据范围:\(1 \le n \le 阅读全文
posted @ 2022-03-19 16:49 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 首先要最小化 m,其实这个应该打表 口胡了一些按顺序归位的做法均假了 然而排列的题先想着把二分图建出来 那么考虑分别对上面的每个环做归位 也就是将 aii 换到 ai 上去,这可以用一个寄存器做到 然而最后一个位置归位时会重复 那就撤销上一次操作,配 阅读全文
posted @ 2022-03-19 11:37 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 发现若一个点确定了,整个 kgon 就确定了,可以三角形划分计算面积 然后这些点的值域较小似乎用处不大,那大概可以 rand 几个点或在以 Ck 为长度的一段上跑退火 然后神必题解说这是个单峰函数,鬼知道是为什么,所以可以三分 关于在类似正弦函数的 阅读全文
posted @ 2022-03-19 10:34 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 看完题解才发现是真的水 给出 n 条线段,给出的线段可能出现同方向线段的首尾相连、重叠或包含,此时应将其视为连续的一整条线段 问最后图中有几条线段: 按斜率分开处理,对于每种斜率,将线段排序后是个简单区间求交问题 那就直接粘 Sol 了 排序 合并线段 判断线段条数是否为15 暴力判 阅读全文
posted @ 2022-03-18 21:25 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 以样例为例 将每个这样的面单独考虑 ....+ + .../ /| ..+ + | ..| | + ..| |/| ..+ + | ./ /| + + + |/. | | +.. | |/... + +.... 那么可以从最左下角的 + 开始向上找 每次看上面是 | 还是空格 这样可以找到下 阅读全文
posted @ 2022-03-18 21:04 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 对着假结论研究了一年,自闭了 首先发现对于一个 b,一定是找一个 agcd(a,b) 最小的 发现这个 gcd 是枚举的起的,那么最小的 agcdlgcd 一个猜测是对于每个 阅读全文
posted @ 2022-03-18 20:36 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 发现连通块个数 = 被点亮点数 - 被点亮边数 赛时从这里开始思路就僵化了 只会各种试图优化点集,边集求交 其实存在另一个转化:如果将一条路径的边下放到点上,则只有 lca 是未被覆盖的 又发现一个连通块中有且仅有一个这样的未被覆盖的 lca 于是对这个东西计数 枚举路径计算它前面和后面第一 阅读全文
posted @ 2022-03-18 17:34 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 发现 A 先手时 A 必败的条件是 序列的两端存在 0 或 序列中存在 2 个连续 0 或 存在长度为偶数的全 1 序列 前两个条件是因为这两个性质 B 可以一直保持 最后一个是因为 A 将其消完后会出现两个连续 0 B 先手时 A 必败条件是 B 可以用恰好一次 阅读全文
posted @ 2022-03-18 17:27 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 发现就是要动态维护一个集合线性基的大小 线段树分治即可 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #define fir first #define 阅读全文
posted @ 2022-03-18 17:22 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 一个事情是可以随机问一下 [1,i1][1,i] 只要序列不是单调减的都大概率能问出 ai 一个有趣的可能可以在许多询问区间 min/max 的交互题中用来缩小范围的东西是这个 代码咕了 阅读全文
posted @ 2022-03-17 21:08 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 我以为我爆标了结果最后假的离谱 考虑这个协作者的性质 发现一定是越先选越优 为了提升加倍的效果协作者一定是最先选的,且一定按 bi 不降选 所以可以先按 b 排序 那么我假就假在这里了: 我认为存在一个位置 i 满足选的协作州都在 i 之前(包括),支持州都 阅读全文
posted @ 2022-03-17 21:00 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先有向完全图被称作竞赛图 那么竞赛图的强连通分量缩点后形成了一个 DAG,而且上面的每个点向后面的所有点连边 定义一个“割集”为链上的一个前缀,那么这个割集中的所有点向割集外的所有点连外向边 那么强连通分量数就等于合法的前缀数 +1 于是考虑期望的线性性拆开,强连通分量数的期望可以拆成每个 阅读全文
posted @ 2022-03-17 20:50 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 发现是对子集计数,不好直接做 赛时试图固定右端点算包含这个右端点的无果 结果正解的基础 DP 比这个要暴力亿点 直接枚举一个子集最左、右的两个元素 那么能随意选的元素的限制区间必须包括这两个端点 于是对右端点扫描线 一个能够到当前右端点的 ili 处的贡献是将 \(l 阅读全文
posted @ 2022-03-17 19:14 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 弄个矩阵高斯消元 发现矩阵很像带状矩阵 具体一点,它长这样: 那么一种处理方式是分成几个部分分别处理 先把 2 部分当成增广部分(用这部分未知数表示前 nk 个元) 然后把 1 部分消成只有主对角线上有值 然后用 1 部分将 3 部分消空(右边仍当做增广矩阵) 然后对 4 部分暴力 阅读全文
posted @ 2022-03-17 19:08 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 刚了一场没刚动 关于一类定长区间修改问题:差分之后发现每次修改会影响到的两个点在模区间长意义下同余,也许可以对依次对区间长根号分治 按位异或的优先级大于逻辑等于的优先级 那么发现如果对每个剩余系单独维护一个序列 这个序列的前缀异或和中非零数的个数和就是答案 那么要支持的操作就是单点修改,区间 阅读全文
posted @ 2022-03-17 18:52 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 前三个小时都有点神游导致没发现这题是水题 首先化式子 令 x=a+bc,则要求 x3+1xt 这个可以枚举 x 开桶判断 然后 a+b 可以 ntt 卷积预处理出来 接下来赛时就只会对每个 x 枚举 阅读全文
posted @ 2022-03-17 18:12 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 菊花图的部分分堆贪心是假的,需要较为麻烦的线段树+二分 题意: 要求从 1 号点开始走一个路径并最终回到 1 号点,且这条路径经过了所有的边,一条路径的代价就是它经过的边的边权之和。 我们可以加若干条额外边,第 i 条加的额外边的边权为正整数 Ai。 注意, 阅读全文
posted @ 2022-03-15 20:10 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 对于每个点被多少区间覆盖一类问题:将这些区间差分了试试? 将所有区间差分成 [l,r+1) 的形式 发现这个 abs1 就很烦 可以在每个被奇数个区间覆盖的位置 i 放一个区间 [i,i+1) 转化为覆盖每个位置的黑色区间数等于白色区间 阅读全文
posted @ 2022-03-15 19:56 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 关于 O(n6) 跑过了这件事 一个 O(n5) 的做法是拆成 (n2)(m2) 个一维的情况考虑 正解咕了 点击查看代码 #include <bits/stdc++.h> using namespace std; #define 阅读全文
posted @ 2022-03-15 19:44 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先发现这种集合就是一个线性空间 于是问题变为本质不同线性基计数 对于一个数查询其是线性基内排名: 将线性基转为最小表示,将每个主元位置在要查询的数的二进制表示下对应的位置单独拎出来组成一个二进制数,即为排名 证明考虑这样的实际意义即可 将 {y1ym} 做线性 阅读全文
posted @ 2022-03-14 22:00 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 发现一个区间内前 log 大的数不可能对答案没贡献 于是一个乱搞是线段树取出前 log 大的数,单调栈 O(n2) 在这 log 个中求答案 复杂度 O(nlog2n),可以过 zhengrui 的 200 组数据 但是很好卡,考虑最大的 阅读全文
posted @ 2022-03-14 21:48 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 发现一次修改影响的东西太多了所以几乎什么都不能维护 所以缩小有用的点集 发现可以将有用的点约束到 j[ik,i1],ajaij[i+1,i+k],aj<aii 于是发现在每 阅读全文
posted @ 2022-03-14 21:43 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 我的思路引入是全同态加密 考虑一个全同态哈希使得 h(m)kh(mk) 这个 h(x) 怎么构造呢?发现 h(x)=xmodp 就满足这个性质所以…… 损失一些正确率将 h(m) 的值域降到可以枚举的范围 于是可以枚举 check 是 阅读全文
posted @ 2022-03-14 21:38 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先一个 O(n2) 的 DP 是显然的 然后赛时脑子抽了试图单次 O(logn)O(log2n) 维护答案变化 事实上可以支持单次 O(nlogn) 因为单点权值变化量只有 1 所以如果一个点的 DP 值变了那一定和这次修改的变化量相同 阅读全文
posted @ 2022-03-14 21:25 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 以前见过的套路……但分的时间太少了 首先发现可以每次用 disi+ci 最小的 i 更新其它点 随即发现每个点只有第一次被更新是有用的 于是考虑点分树优化建图 对每个点分树上的点扫出子树内的点并排序,单调指针即可 由于有个排序在复杂度是 O(nlog2n) 阅读全文
posted @ 2022-03-14 21:18 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 后面几个可以很方便地状压容斥 设计矩阵的时候手别抖 一些物品数和体积都非常小的背包问题可以转成集合幂级数然后矩乘优化 DP 对于一类形如 阅读全文
posted @ 2022-03-13 07:44 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 保证数据随机的那一档合法区间非常少 找性质: 于是可以求解一个区间的答案 于是只需要算 O(n) 个区间答案 需要将计算式写出,大力分类讨论拆 min 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0 阅读全文
posted @ 2022-03-12 21:26 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 一个暴力是枚举前三个点,bitset 确定最后一个 树上连通性/链相交一类问题记得试试 边-点=1 的容斥 实现时的一个技巧是边化点 那就枚举钦定 A 中的一个边/点删去,将形成的几个连通块分别染色 在第二棵树上同样用 边-点 容斥算出合法四元划分数 直接计算就可以了 用 vector 会获 阅读全文
posted @ 2022-03-12 21:18 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 没做出来自闭了 首先找性质: 关于一个序列所有子序列的异或和之和: 考虑每一位的贡献,发现若存在一个数这一位是 1,则它一定会贡献 2n1 次 证明(令这一位为 1 的有 x(x>0) 个): \(\operatorname{contribution}=2^{n-x} 阅读全文
posted @ 2022-03-12 21:11 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 首先有一个 O(4n) 的 DP 比较显然(同时记录灯的亮灭和后续翻转情况) 然后优化的话发现所有操作的顺序是无关的 这启示我们枚举每个操作到结束的时间,这样就可以确定每个操作的后续影响了 于是令 fi,s 为还剩 i 秒,考虑后续影响的状态为 s阅读全文
posted @ 2022-03-12 07:49 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 赛时见到这种题就快走吧,剩下的题还有机会 就现在我这份码都基本是贺的 首先发现有发财路径等价于有负环 当题目要给一些东西定/赋权值,在不同的物品上贡献有正有负/有不同的系数: 若你定的权是 x,那这个物品的权值可以写成 kx+b 的形式吗? 一个暴力是枚举简单环 那么整个环的 阅读全文
posted @ 2022-03-10 21:31 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:要用 %f 而不是 %lf 输出 double 类型 C++ 中 -10 / 3 = -3,是向零取整 当序列中元素的操作顺序无关紧要时,按从小到大/从大到小的顺序加入元素貌似是一个常见的解除限制的方法 阅读全文
posted @ 2022-03-10 17:18 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 求最小表示法意义下的不同子串数 当字符集很小时存在一个做法是枚举映射 设字符集大小为 m 则若我们保证了一个子串每种 原字符 和 最小表示法下对应的字符 的映射都在原串中出现过, 那答案就是本质不同子串数除以 m! 为了保证每种映射都出现过我们可以枚举映射将原串映射一遍接在后 阅读全文
posted @ 2022-03-10 17:09 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 调吐了 每次写线段树历史和都必定假至少一次 多次查询 i=lrj=irmex(ai,ai+1,,aj) 考虑扫描线维护每个区间的 mex,最后历史和加起来 查询的话 阅读全文
posted @ 2022-03-10 12:09 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 首先发现纵坐标都相同的时候可以从上面每个点向下面一条线算投影 还可以发现纵坐标都相同而且强制在线的话可以人类智慧 然后正解: 感觉可以对每个端点分开考虑比较不好想 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 阅读全文
posted @ 2022-03-10 11:37 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 没看见“有限区域”爆零了 首先这个 30 度很烦,我们转一下坐标系 就是原来的基向量乘上一个矩阵等于新的基向量,解出这个矩阵来即可 现在每个点可以向右/上引出一条射线,求最大有限区域数 考虑用欧拉公式转化一下 发现对于最终的每个连通块,每个有限区域的每条边唯一对应一条射线 那么我们要做的就是 阅读全文
posted @ 2022-03-08 19:34 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 发现可以对字符建出一张有向图 那么有一些点上有个棋子,每次可以选一条边 (u,v),若 u 上有棋子则移动到 v 当两个棋子移动到同一个点上时会合并 求将每条边操作至少一次后最多剩下多少棋子 首先发现若一个强连通分量中含有空点,那么这个强连通分量中的所有边都可以无代 阅读全文
posted @ 2022-03-08 18:56 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 先设法构造一个 f(a,b)=ab 找性质的话可以画表格 有 f(a,b)=(a+b)(mod3) 于是一次操作为 fi=(fi+f(i+1)modn)(mod3) 于是可以卷积处理但我不会循环卷积啊 发现系数可以用组合数表 阅读全文
posted @ 2022-03-07 18:58 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 当出现形如 n×m100 的条件时,若钦定 nm 可以将 n 约束到根号级别 完全就是考察选手敢不敢写 觉得状态数炸天的就没有分了 觉得可以写写试试就可以 A 了 令 fi,s,j,k 为到 \( 阅读全文
posted @ 2022-03-07 18:12 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先容易看出一个第 i 次操作砸一个编号为 i 的球,最后砸一个编号为 nsum 的球的做法 这样的复杂度是 O(n) 的 然后发现每种编号的球留一个就够了,剩下的全都可以砸 于是就可以过了,复杂度应该是……阶乘的反函数? 注意当 n阅读全文
posted @ 2022-03-07 18:08 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 连基础容斥都不会了怎么办啊 第一思路是两层容斥,每层满足一个限制,然后就不会做了 然而第二个限制明显比第一个强,更适合做外层容斥 令 F(i) 为 有 i 种 topping 不合法,其余任意的方案数 则 ans=(1)iF(i)f(i) 阅读全文
posted @ 2022-03-06 21:31 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先可以想到容斥 但具体怎么容斥还是有点特别的 令 f(s) 为钦定 s 中的点满足 |aii|=k,剩下的点随便选的方案数 发现在一个排列中钦定一个 ai 的值并不影响剩下的数做排列(即剩下的数的排列方案数是 (n1)!) 那么就可以得到 \ 阅读全文
posted @ 2022-03-06 21:31 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 部分分可以插头 DP 考虑 wi,j=0 就是判断是否存在合法方案 网格图上的问题都试着黑白染色一下 发现黑白染色后因为每个点度数为 2,就转化为了二分图匹配,网络流即可 正解可以扔链接嘛…… 凸费用流的建边 点击查看代码 #include <bits/stdc++.h> u 阅读全文
posted @ 2022-03-06 21:27 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 感觉是个很巧妙的优化方式 首先发现模数是 2,由 Lucas 定理知此时 (nk)=1 仅当 kn 的子集 于是可以过 subtask 1 令在每个位置选的数的数量为 xi 则在 t0 处的选法数是 \(\binom{t_0} 阅读全文
posted @ 2022-03-06 21:20 Administrator-09 阅读(15) 评论(0) 推荐(0) 编辑
摘要:传送门 神仙……构造题? 考虑让区间内有边的数多一些,那么可以选 L=piprimepi 这样的话只有 L+1L 不连通 那么尝试通过调整使它们连通 考虑选一个质数 a 使 L+10(moda) 阅读全文
posted @ 2022-03-05 21:26 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 求在 n 的约数中选一些数使得任意两数之间不存在约数关系,问最多能选多少个数 如果显式地建出来边的话可以发现是个 DAG 于是就是求 DAG 上最长反链长度,可以 Dilworth 定理转为最小链覆盖然后跑网络流了 然而有更优的解法: 一个结论:令 f(i)i 阅读全文
posted @ 2022-03-05 17:45 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 显然是根号分治,问题是怎么分 因为这两种修改之间不太能合并,所以直接对询问分块的话无法在 O(n) 的复杂度内计算 q 个修改的贡献 不过可以过掉只有一种修改的部分分 然而我证假了一个非常重要的结论,所以寄了 对于一次查询,只有最后一次操作 1 之后的操作 2 是 阅读全文
posted @ 2022-03-05 17:26 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 口胡了一个 O(n2) 的做法: 发现原问题是给了一棵根已确定的点,要在子树中加点 令 fu 为构建以 u 为根的子树(u 已经加入固定点集)方案数 发现每个儿子所在子树相互独立,分开算最后组合数合并 对于每个儿子所在子树:dfs 枚举这个子树中第一个选择 阅读全文
posted @ 2022-03-04 21:48 Administrator-09 阅读(6) 评论(0) 推荐(0) 编辑
摘要:传送门 真·神仙题 因为我忘了暴力怎么打了直接说正解吧 参考博客 仔细撕烤「第 i 位选手会发动技能,当且仅当他发动了技能后会获胜,且不发动时不会获胜」这句话 又注意到选手按编号从小到大依次发动技能 那么对于一个人 k,若 x=kak(modn) 因为在前面发动技能的人 阅读全文
posted @ 2022-03-04 21:01 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先发现对于最终构成答案的路径,将其边权排序后会是 lim 的都不选 先一遍 dij 处理掉最终答案不满 k 条边的情况 接下来枚举这个 lim,分别跑一次二维 dij 更新答案 这样是 O(n3logn) 的 发现最短路关于 lim 阅读全文
posted @ 2022-03-04 14:29 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 发现矩阵乘法对于加法有结合律,所以按题意线段树维护即可 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #define ll long long //#d 阅读全文
posted @ 2022-03-04 14:18 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 对每个前缀做一次全文匹配吗? 容易想到 AC 自动机,并且可以发现就是对 fail 树求 sizi 而且发现 AC 自动机上只有一个模式串 直接建空间开不下,需要每次跳 fail 那复杂度是什么呢? 只有一个模式串的 AC 自动机就是 KMP:因为我四十分钟都没意识到这个 阅读全文
posted @ 2022-03-04 14:16 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 算是相对简单的一道 可以发现最优策略下第一行一定升序,第二行一定降序 那在这个条件下乌龟一定会把其中一行和左上右下两个角全走完 那就是要将去掉最小的两个数后的序列分为两部分,使和的最大值最小,并输出方案 bitset 优化背包即可 复杂度 O(n3Vω) 阅读全文
posted @ 2022-03-03 22:05 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 关于「对子树内某个深度的所有点进行操作」的一个可能的处理方法:建 BFS 序 于是有个 O(nlog3n) 的做法: 对于每个修改,枚举 log 个祖先,每个向下计算 log 层贡献,单次用 log 的线段树 一种支持区间加,查询区间内满足 \(val_i\geqslant c_ 阅读全文
posted @ 2022-03-03 21:44 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 一些方案数会爆 long long 但我们只需知道它是否 > 某个数的情况下我们可以让这个方案数时刻对 1e18 取 min s 弄那么大似乎没什么用,不影响数位 DP 令 fi,j 为考虑到第 i 位,与 s 匹配长度为 j 的方案数 这里转 阅读全文
posted @ 2022-03-03 21:28 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 怎么连套路 DP 都不会了啊/kk 貌似是个很套路的 DP 考虑按从小到大的顺序加入下一个数 于是每次加入的数一定大于已有的所有数 所以加到一个峰的旁边峰数不变,否则峰数+1 令 fi,j 为前 i 个数,有 j 个刺头的方案数 有 \(f_{i, j}=f_ 阅读全文
posted @ 2022-03-03 21:22 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 所以线段树分治我其实到今天才会 线段树分治板子题 线段树分治的时候注意叶子节点不要忘了撤销操作 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #defi 阅读全文
posted @ 2022-03-02 11:39 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:DZY Loves Math IV P4240 毒瘤之神的考验 暴力题 不知道之前 DZY 这题我为什么没写题解大概是忘了,所以先来补一下 因为 m1e9,所以推法和后面并不太一样 令 p=pici1,q=pi $$\begi 阅读全文
posted @ 2022-03-01 21:51 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 连暴力都不会打.jpg 所有需要用邻接矩阵读入的题注意是否有重边! 建议全部用 dis[i][j]=min(dis[i][j], read()); 来读入 先不想怎么把 C 孤立出来,假设只有 1 次询问 发现不经过和起点不等于终点的代价都是 C 所以考虑让起点不等于终点等价于未经过起点 那 阅读全文
posted @ 2022-03-01 16:34 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示