摘要:
无向基环树找环,遍历模板: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; int n; vector<int> e[500005]; bool vis[5 阅读全文
摘要:
【根号分治】 例题:等差数列加 给定一个长度 \(n\) 的数列,初始全都是 0。(\(n\leq 2\times 10^5\)) 要求支持两种操作: \(1\;x\;y\;d\),表示把所有下标模 \(x\) 等于 \(y\) 的位置全部加上 \(d\); \(2\;x\),表示查询 \(a_x\ 阅读全文
摘要:
一道练习贪心证明的好题。 绝大多数题解只是点出了以下结论: 要么最快的带最慢的;要么最慢的带次慢的。 并没有给出证明。我就补上这个证明。 为了证明这个贪心结论,我们先证明几个引理。 引理一:每次将火把带回来的,一定是对岸最快的。 引理一证明:如果回来的不是对岸最快的,让对岸最快的人代替这个回来的人的 阅读全文
摘要:
自己做不出来,看现在题解区的题解讲的都不咋清楚。懂了之后来为后人铺路。而且我的马蜂比较好看 题目传送门 我能看懂这道题,主要是依靠了这篇题解的帮助。 首先我们只关注数的相对关系,所以可以离散化。注意到值域 \(10^6\),用数组离散化。 这道题可以用贪心做。(有一些定义先往下看) 定义一个无缝子序 阅读全文
摘要:
传送门 注意题目保证新加入的区间长度一定最大,想一想,这是保证了新区间不会被包含。 区间关系有三种:如果两个区间相交,则两个区间互相可达;如果是包含关系,小的能到大的;如果相离,都不能到。 显然当区间 \(a\) 与 \(b\) 相互可达,\(b\) 与 \(c\) 相互可达,则 \(a,b,c\) 阅读全文
摘要:
传送门 先将括号序列建树。 具体而言,假设当前根结点为 \(rt\),当前括号序列为 \(s\)。若 \(s\) 能分成 \(cnt\) 组括号,则 \(rt\) 有 \(cnt\) 个儿子。对于第 \(i\) 个儿子,以它为新根结点,第 \(i\) 组括号为新括号序列,递归建树。 例如 (()() 阅读全文
摘要:
传送门 题意;找出最浅的点分树。 发现这是一个等价问题:给每个结点一个标号,当两个结点标号相同时,它们的路径上必有严格更小的标号。如果找到了这样一种标号方法,每个结点的标号就是它的深度。 同时我们还可以把每个结点的标号 \(x\) 对应到 \(n+1-x\),也是一一对应。问题又变成路径上必有严格更 阅读全文
摘要:
传送门 题意简述:给定序列 \(a,b\) 和 \(m\) 次查询,每次询问 \(\displaystyle\sum_{i=l_i}^{r_i}\sum_{j=i}^{r_i}(\max_{k=i}^j a_k\times \max_{k=i}^jb_k)\)。 \(n,m\le 2.5\times 阅读全文