摘要: 前言 真的,做题就想钻空子一样,灵活,巧妙的躲避一切障碍,多有趣啊(记得在那堂课上真心为蜡老师鼓掌) CF2077D Maximum Polygon 题目简述 给出一个数组 \(a_i\) 选出一个字典序最大的长度大于等于 \(3\) 的子序列 \(s_i\) 满足 \(2\cdot \max(s_ 阅读全文
posted @ 2025-04-23 10:41 LUHCUH 阅读(68) 评论(0) 推荐(0)
摘要: CF2077F AND x OR 题目简述 由一个数组 \(a\),一个数组 \(b\). 我们通过一些操作使得 \(a\) 变成 \(b\) 的最小代价 \(a_i:=a_i+1\),\(b_i:=b_i+1\) 这两种操作代价为 \(1\) 再做完前两种操作后,可以免费执行若干次 \(a_i:= 阅读全文
posted @ 2025-04-23 09:50 LUHCUH 阅读(20) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2025-04-23 09:24 LUHCUH 阅读(6) 评论(0) 推荐(0)
摘要: Stoer-Wagner 简介 无向正权图上全局最小割 \(O(nm)\) 大概? 流程 基本原理,我们设答案割掉的边集为 \(c\),那么对于任意段对,\((s,t)\) 要么 \(c\) 是 \(s,t\) 的最小割,要么 \(s,t\) 在割完之后同属一个联通快。 于是我们自然地可以找两个点对 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(20) 评论(0) 推荐(0)
摘要: PQ 树 算是 oi-wiki 的感性理解吧 参考实现 #include <bits/stdc++.h> using namespace std; void Fail() { cout << "NO" << '\n';exit(0); } struct PQT { enum co { white = 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(17) 评论(0) 推荐(0)
摘要: Lyndon 分解 首先有性质,任意字符串存在唯一 \(Lyndon\) 分解。 Lyndon 串,须满足,Lyndon 串本身,是它的最小后缀。 Lyndon 分解,就是把字符串划分成若干 Lyndon 串 \(w_1,w_2,\cdots,w_n\),需满足 \(w_1\ge w_2\cdots 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(67) 评论(0) 推荐(0)
摘要: 后言 除了每次操作,轮换维度之外,还有一种基于方差的写法 我们求出所有维度的方差,找到方差大的也就是混乱的维度进行划分 nth_element(begin,pos,end,cmp); 这个背下来吧就 #include <bits/stdc++.h> using namespace std; // t 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(28) 评论(0) 推荐(0)
摘要: 【模板】k 短路 / [SDOI2010] 魔法猪学院 前言 我,没记错的话,这是传说中的 noi 篇啊,忘的一干二净 我去,反省一段时间 题解 首先这里的 \(k\) 短路指的是非严格的 比较自然的我们有 A* 搜索,维护到达 \(u\) 花费的代价为 \(w\),估计函数为 \(w+dis(u, 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(29) 评论(0) 推荐(0)
摘要: 最小直径生成树 注:下文的 \(dis(u,v)\) 指的是 \(u,v\) 的最短路 给出一个无向图,找到其中的一颗直径最小的生成树。 我们考虑树有中心,是到所有节点距离最大的点最小的点。 类地的我们说一个图的中心,是一个点,这个点可以在图的点上,也可以是边上的一个点。 明确一些性质。 性质一:必 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(30) 评论(0) 推荐(0)
摘要: 感悟于 最小树形图,是对有向图求解最小生成树的过程,同样地边权和最小。 先说朱流算法。 首先我们给定一个根 \(rt\),观察树形图的树结构 每个节点除了根,仅有一个入边,那么我们对于所有的点都贪心地选出一条入边最小的边,希望最终的图中能有它。 可是往往结果并不乐观,我们可能出环。那怎么办呢?环内迟 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(22) 评论(0) 推荐(0)
摘要: 网络流 无源汇上下界,可行流。 我们考虑边 \(u\to v\) 流量为 \([l,r]\) 对于 \(u\) 点来说,相当于在 \(u\) 处加一条 \(u\to T\) 流量为 \([0,l]\) 的边,用来吞掉 \(l\) 的流量,才可以把 \(u\to v\) 的流量设为 \([0,r-l] 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(12) 评论(0) 推荐(0)
摘要: 团 团:是一个点集,满足,任意两点有边相连 最大团:点集大小最大的团。 极大团:首先是个团,其次不在团上的点,加入点集不会构成新团。 体会一下,团 \(\subset\) 极大团 \(\subset\) 最大团。 最大团 若我们只想找出最大团的点集数。 一种好的办法其实就是直接搜索加减枝。 优化1: 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(51) 评论(0) 推荐(0)
摘要: 后言 一定要值相同的放一起统计啊,不然删除会很难受的。 向这种重量平衡树,可以解决 double 除 2 丧失精度的一些问题吧。 参考实现 #include <vector> #include <iostream> using namespace std; const double alpha = 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(9) 评论(0) 推荐(0)
摘要: 树的中心 在树中,如果节点 \(x\) 作为根节点时,从 \(x\) 出发的最长链最短,那么称 \(x\) 为这棵树的中心。 \(1\) 个 或 \(2\) 个 中心必然位于直径上。 树上到点 \(u\) 最远的点 \(v\),路径 \(u,v\) 必然包含中心 合并两颗树,想要直径最小只需要连接两 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(16) 评论(0) 推荐(0)
摘要: 后言 就背下一个 hash 函数就行了 ull shift(ull x) { static const ull mask = mt19937_64(time(0))(); x ^= mask; x ^= x << 13; x ^= x >> 17; x ^= mask; return x; } ul 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(16) 评论(0) 推荐(0)
摘要: 感悟于 括号序列计数 我们设长度为 \(2n\) 的合法括号序列个数为 \(f_n\) 考虑转移,我想得是,若一个括号序列可以由多个括号序列并排排列起来,若一个括号序列只能删除左右两边的括号。感觉这不太优美可能需要配合 \(g\) 辅助,然后还要求生成函数啥的。 wiki 的优美刻画:注意到对于括号 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(33) 评论(0) 推荐(0)
摘要: 后言 为什么只需要在 split 的时候可持久化就可以了 而不用在合并的时候再做一次? 因为,我们一次操作,都会先分裂,而我们只关心对一次操作之后的状态保留下来。所以合并的时候即使改变了状态也无所谓,因为我们并不关心中间的版本,而若是,分裂之后的状态也是有用的,那么我们合并也需要可持久化了。 还有就 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(11) 评论(0) 推荐(0)
摘要: 后言 其实没啥想说的,就是注意我们实际上是对奇数偶数根互相为 fail 的。 也就是 fail[0]=1,fail[1]=0 还有就是,先算 fail 再令 \(ts[pos][c]=n\) 要不可能会出现自己连自己的情况,就不好了。 #include <iostream> using namesp 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(15) 评论(0) 推荐(0)
摘要: 感悟于 简单环计数 简单环: 点不同,边不同的环 自然的,设 \(dp_{s,i}\) 点集为 \(s\),最后选的点为 \(i\),初始点为 \(s\) 中最小的方案数。 枚举下一个走到的点 \(u\) 若 \(u\) 为环起点,统计答案,否则需满足 \(u\) 不再 \(s\) 中,就转移. 最 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(49) 评论(0) 推荐(0)
摘要: 表达式求值 其实仔细想象并不难 首先得用栈,我也不知道为什么,可能是因为括号匹配吧 对于括号,我们只需要遇到左括号存其来,遇到右括号则计算括号内的值就好了 对于二元运算符,运算级相同从左向右计算,运算级不同的先算运算级大的,其实只需要在加入一个运算符之前,把所有优先级大于等于这个运算符的都计算了,就 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(65) 评论(0) 推荐(0)
摘要: CF2081C - Quaternary Matrix 题解 设 \(R_i\),\(C_i\) 分别表示,每行,每列的异或和 一种构造 取 \(R_1\) \(C_1\) 为关键行列。 用 \(R_1\) 还原所有 \(C_i(i\not= 1)\) 用 \(C_1\) 还原所有 \(R_i(i\ 阅读全文
posted @ 2025-04-23 08:01 LUHCUH 阅读(20) 评论(0) 推荐(0)