摘要:
板子 对顶堆 template<class T> struct DualHeap { Heap<T, std::greater<T>> small; // 小根堆,里面存放大的值 Heap<T, std::less<T>> big; // 大根堆,里面存放前k小的值 //中位数就是big.top() 阅读全文
摘要:
https://codeforces.com/problemset/problem/1920/C 同余的一个性质: 证明很显然,但是想不到这个性质 题意 给你 \(n\) 个数,划分 \(k\) 段,每段在对 \(m(m\ge 2)\) 取模之后相等即为一个合法方案,问有多少个合法方案。 断点 // 阅读全文
摘要:
P4718 https://www.luogu.com.cn/problem/P4718 要求找最大的素因子,考虑可能出现在因子的因子中,所以需要递归 i64 max_prime(i64 n) { if (isp(n)) {return n;} i64 mx{std::numeric_limits< 阅读全文
摘要:
板子和常识 https://oi-wiki.org/graph/bcc/ 板子用的是 tarjan算法2 的思想 只能跑无向图 理论基础 SCC部分 对于一个连通分量图,我们很容易想到,在该连通图中有且仅有一个 \(u\) 使得 $\texttt{dfn}_u=\texttt{low}_u $。该结 阅读全文
摘要:
理论基础 异或哈希是个很神奇的算法,利用了异或操作的特殊性和哈希降低冲突的原理,可以用于快速找到一个组合是否出现、序列中的数是否出现了k次 https://blog.csdn.net/notonlysuccess/article/details/130959107 https://codeforce 阅读全文
摘要:
E - Minimize Sum of Distances https://atcoder.jp/contests/abc348/tasks/abc348_e 换根DP or 带权树的重心 换根DP 如果只求根节点的 \(f_x\),那就是一个很简单的树形DP(甚至没用dp吧,就dfs一遍): \ 阅读全文
摘要:
E - Alphabet Tiles https://atcoder.jp/contests/abc358/tasks/abc358_e 方案数DP。 先看摆花(五年前做过)。 记 \(f_{i,j}\) 表示摆完前 \(i\) 种花,目前已经有了 \(j\) 盆花的方案数。 可以考虑先枚举当前摆第 阅读全文
摘要:
https://codeforces.com/contest/1879/problem/D 关键在于互换两个 \(\sum\) 的顺序 一般像这样计算所有子区间的式子,如果要优化成接近线性,有一种可行思路是把注意力放在右端点,通过不断移动右端点,在移动的时候利用前面的统计结果算出移动右端点后的结果 阅读全文
摘要:
E - Clique Connect https://atcoder.jp/contests/abc352/tasks/abc352_e 最小生成树 先复习一下最小生成树,这里用Kruscal 生成树(spanning tree):一个连通无向图的生成子图,同时要求是树。也即在图的边集中选择 \(n 阅读全文
摘要:
https://codeforces.com/contest/1660/problem/F2 同余分组,树状数组维护逆序对 先承继F1的做法,维护一个前缀和数组,让 s[i] == '+' 为 \(1\),s[i] == '-' 为 \(-1\)。 那么要满足两个条件: \(pre_r - pre_ 阅读全文