随笔分类 -  知识总结

摘要:这类题是让你求对序列进行一系列操作之后的最小/最大中位数 求最小中位数 二分最小中位数,显然二分要符合 mid 越大越对,边界才能向下收缩。 对于这个条件,我们选择计算 小于等于 当前 mid 的数才是对的,因为这样显然 mid 越大 cnt 越大,而符合这个条件,我们就不断收缩上界,直到达到第一个 阅读全文
posted @ 2024-10-20 15:11 加固文明幻景 阅读(44) 评论(0) 推荐(0)
摘要:https://codeforces.com/problemset/problem/1920/C 同余的一个性质: 证明很显然,但是想不到这个性质 题意 给你 \(n\) 个数,划分 \(k\) 段,每段在对 \(m(m\ge 2)\) 取模之后相等即为一个合法方案,问有多少个合法方案。 断点 // 阅读全文
posted @ 2024-09-25 14:06 加固文明幻景 阅读(90) 评论(0) 推荐(0)
摘要:P4718 https://www.luogu.com.cn/problem/P4718 要求找最大的素因子,考虑可能出现在因子的因子中,所以需要递归 i64 max_prime(i64 n) { if (isp(n)) {return n;} i64 mx{std::numeric_limits< 阅读全文
posted @ 2024-08-11 11:17 加固文明幻景 阅读(55) 评论(0) 推荐(0)
摘要:板子和常识 https://oi-wiki.org/graph/bcc/ 板子用的是 tarjan算法2 的思想 只能跑无向图 理论基础 SCC部分 对于一个连通分量图,我们很容易想到,在该连通图中有且仅有一个 \(u\) 使得 $\texttt{dfn}_u=\texttt{low}_u $。该结 阅读全文
posted @ 2024-08-02 09:36 加固文明幻景 阅读(49) 评论(0) 推荐(0)
摘要:理论基础 异或哈希是个很神奇的算法,利用了异或操作的特殊性和哈希降低冲突的原理,可以用于快速找到一个组合是否出现、序列中的数是否出现了k次 https://blog.csdn.net/notonlysuccess/article/details/130959107 https://codeforce 阅读全文
posted @ 2024-07-31 07:43 加固文明幻景 阅读(991) 评论(1) 推荐(1)
摘要:https://codeforces.com/contest/1879/problem/D 关键在于互换两个 \(\sum\)​ 的顺序 一般像这样计算所有子区间的式子,如果要优化成接近线性,有一种可行思路是把注意力放在右端点,通过不断移动右端点,在移动的时候利用前面的统计结果算出移动右端点后的结果 阅读全文
posted @ 2024-06-15 16:23 加固文明幻景 阅读(69) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1660/problem/F2 同余分组,树状数组维护逆序对 先承继F1的做法,维护一个前缀和数组,让 s[i] == '+' 为 \(1\),s[i] == '-' 为 \(-1\)。 那么要满足两个条件: \(pre_r - pre_ 阅读全文
posted @ 2024-05-28 20:36 加固文明幻景 阅读(44) 评论(0) 推荐(0)
摘要:E https://atcoder.jp/contests/abc353/tasks/abc353_e 其实就是字典树板子题。 似乎遇到最长公共前缀,就该想到字典树。 依次加入每个字符串: 维护一个数组 siz 来统计在当前串之前的串在对应点的出现次数。 手模一下字典树的建树过程,显然如果当前串 \ 阅读全文
posted @ 2024-05-11 22:38 加固文明幻景 阅读(98) 评论(0) 推荐(0)
摘要:Problem - 1373D - Codeforces 先看出了一个很显然的东西,逆转的子序列的长度必须是偶数。 但之后就想错了,想到双指针和其他方法去求这个最大段。 但我粗暴的通过 \(a_{i + 1} - a_i\) 来贪心双指针明显是不对的。 最大子段和 只要把 \(a_{i + 1} - 阅读全文
posted @ 2024-03-28 19:03 加固文明幻景 阅读(70) 评论(0) 推荐(0)
摘要:Problem - D - Codeforces 用记忆化搜索过的,然而DP能快300ms 记忆化搜索 | \(\texttt{set}\)模拟 核心思路一致,都是通过定义一个状态,即在第t次到达第now点来去重剪枝 记忆化搜索 int n, m, x; std::vector<std::pair< 阅读全文
posted @ 2024-03-13 12:50 加固文明幻景 阅读(71) 评论(0) 推荐(0)
摘要:Problem - G - Codeforces 思路 一开始写了一个无脑BFS剪枝求最短路,然后顺带更新最小线路数量,被hack了。 应该直接针对问题处理,通过BFS直接求最小线路数量。 这题可以转化成对于一个单点,只有两种选择 走与当前颜色相同的点,答案不变 走与当前颜色不同的点,答案加一 这被 阅读全文
posted @ 2024-03-12 21:26 加固文明幻景 阅读(114) 评论(0) 推荐(0)
摘要:https://www.luogu.com.cn/problem/CF1702E 转化题意 把所有数连边,判断是否为二分图。 染色法 void solve() { #define tests int n; std::cin >> n; std::map<int, std::vector<int>> 阅读全文
posted @ 2024-03-12 21:11 加固文明幻景 阅读(44) 评论(0) 推荐(1)
摘要:Problem - 1730B - Codeforces 贪心解法 \(∣a−b∣=\max(a−b,b−a)\) 由绝对值的性质易证。 那么直接把 \(t_i\) 算到距离中,转换成求最左和最右“坐标”的中间点的简单问题。 //通过把t[i]算到距离中,转换成求最左和最右坐标的中间点的简单情况 v 阅读全文
posted @ 2024-03-12 17:32 加固文明幻景 阅读(57) 评论(0) 推荐(0)
摘要:Problem - B - Codeforces 维护前缀区间mex和后缀区间mex,枚举二者相同的断点 原理 随区间增长,\(\texttt{mex}\) 只可能增,不可能减,所以可以用一个变量维护目前的 \(mex\),区间扩大后可以直接沿用较小区间的 \(mex\),再处理增加即可。 维护 \ 阅读全文
posted @ 2024-03-10 14:02 加固文明幻景 阅读(73) 评论(0) 推荐(0)
摘要:Problem - 1676H2 - Codeforces 思路 原问题可以以直接转化成求 \(a_i >= a_j(i <j)\) 的数量。 归并排序 原理很直接,归并排序就是为了减少逆序对的数量,所以直接在操作的时候记录减少的数量即可 排序后的数组无逆序对,归并排序的合并操作中,每次后段首元素被 阅读全文
posted @ 2024-03-07 13:39 加固文明幻景 阅读(56) 评论(0) 推荐(0)