摘要:
这类题是让你求对序列进行一系列操作之后的最小/最大中位数 求最小中位数 二分最小中位数,显然二分要符合 mid 越大越对,边界才能向下收缩。 对于这个条件,我们选择计算 小于等于 当前 mid 的数才是对的,因为这样显然 mid 越大 cnt 越大,而符合这个条件,我们就不断收缩上界,直到达到第一个 阅读全文
摘要:
讨论框架 一元论:认为只有一种实在或只存在一种真实东西。 二元论:认为有两种实在或存在两种东西。 多元论:认为实在由多种不同真实东西构成。 虚无主义:认为不存在任何真实东西。 二元论 笛卡尔的二元论观点 心灵 本质:思维 模式:肯定,否定,怀疑 肉体 本质:广延 模式:大小,形状,位置 机器中的幽灵 阅读全文
摘要:
https://codeforces.com/gym/104869/problem/K DS题尽量进一步思考,简化维护过程 权值线段树上二分 首先得出一个显然的转化:对于每次操作,求出此次下所有正数从小到大的前缀和的第一次大于所有负数和的绝对值的位置即为答案。 赛时做法 既然要求每次都求a升序下的前 阅读全文
摘要:
板子 对顶堆 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\) 盆花的方案数。 可以考虑先枚举当前摆第 阅读全文