摘要:
题解:建议看官方题解 #include <bits/stdc++.h> using namespace std; #define fi first #define se second typedef long long LL; typedef pair<int, int> pii; const in 阅读全文
摘要:
题解:这里主要讲一下官方题解的调和级数是怎么来的,因为当我们确定了一个最大 \(Ancient Distance = x\) 时,我们可以最多只用 \(\frac{n}{x}\) 个关键的就可以让这棵树的 \(Ancient Distance = x\) ,所以我们用 \(ans[i]\) 表示当关 阅读全文
摘要:
思路:题目的边权是由随机数给出的,所以最短路径上的边数不会很长,有多条不同走法的最短路的情况出现的概率也很低,所以可以先找出一条最短路,删掉一条边后,转化为 \(k - 1\) 的子问题继续求解,直到 \(k = 0\) ,记录最大值就好。。。。 #include <iostream> #inclu 阅读全文
摘要:
题解:首先分析,要大于给出的模式串并且尽可能小,那么一定是优先找和给出的模式串公共前缀尽可能长的字串,假设模式串 \(t\) 的长度为 \(tlen\) , 且 \(t[tlen + 1] = a - 1\) ,那么思路的流程大概如下 1、首先后缀自动机上寻找匹配 \(t\) 的最长字串, 假设长度 阅读全文
摘要:
思路:由于是字典序,所以肯定是越前面的字符对整体的字典序的影响越大,所以我们先看最小的 \(p[i]\) , 假设最小的 \(p[i] = st\) ,并且 \(d[i] != st \% 10\) 。 如果 \(d[i] < st \% 10\) , 那么 \(s_1 - s_i\) > \(s_ 阅读全文
摘要:
[POI2011]ROT-Tree Rotations #include <cstdio> #include <algorithm> #include <queue> #include <stack> #include <string> #include <string.h> #include <m 阅读全文
摘要:
思路:首先想到暴力做法,每次将 其他点并到节点 \(a\) 时,删掉 \(a\) 现有的连边并将新加入的 \(group\) 中的点连出去的所有边连到 \(a\) 上,并将的这些节点的父亲设为 a, 每次都这么操作,是能保证可以得出正确结果的,但是一定会 \(tle\) ,维护父亲节点我们可以用 阅读全文
摘要:
题意:找出文本串中字典序第 k 大的字符串 思路: 首先我们不能仅仅按后缀数组排完序后每个字符串的大小来找,因为重复字符也参与排名,比如 AAB 2, 结果是 A 而不是 AA。 注:以下第 i 个后缀均指排完序后第 i 小的后缀。 所以我们二分找第 k 大的字符串位于哪个区间,假定我们现在确定目标 阅读全文
摘要:
思路:bitset优化dp,具体怎么做请看这篇博客 https://www.cnblogs.com/EchoZQN/p/13320776.html #include <bits/stdc++.h> using namespace std; const int maxn = 4e4 + 50; int 阅读全文
摘要:
思路: 1、首先假设这棵树的结果已经确定,我们统计每颗子树的 w[i] 的和 val,显然 val[1] = \(\sum_{i=1}^n w[i]\) , 假设我们当前选定点 u ,处于点 u 时的结果为 f[u], 点 u 的深度为 depeth[u], 接下来遍历 u 的子节点 v,由于已知 阅读全文