随笔分类 - 具体问题
摘要:一轮复习 题面 似乎有原题, 但是很偏 挂个 pdf 题面下载 算法 暴力 很显然, 只需要在并查集维护时稍微加上一点细节 #include <cstdio> using namespace std; int n,m,fa[500010],a[500010]; long long ans=0; in
阅读全文
摘要:算法 简单算法 DAG 上最长路很好实现, 即按照拓扑序 dp 设已经知道最长路答案为 \(f_x\) 现将每个点按照 \(f_x\) 分层, 最小层级没有出边, 显然字典序排名相同 推导下一层时, 对于出边 \((u, v)\) , 按照边权为第一关键字, 上一层的 \(v\) 的排名为第二关键字
阅读全文
摘要:题面 挂个 pdf 题面下载 算法 有点像扫描线? 容易想到离散化坐标点, 那么对于离散化之后的坐标 \(x\), 粗略来看, 其能分开区间的个数即为 \(\displaystyle\sum_{i = 1}^{n} \left[{l_i < x < R_i}\right]\) 这个可以用类似于差分的
阅读全文
摘要:算法 又是 Monocarp 较复杂算法(学习思路) 暴力 观察到对于每一个 \(k\) , 其最大升级次数为 \(\left\lfloor{\frac{n}{k}}\right\rfloor\) 对于所有的 \(k \in [1, n]\), 我们可以知道其升级次数为 \(\displaystyl
阅读全文
摘要:算法 转化题意, 即为 求树上最长不重链覆盖 长链剖分 显然可以使用长链剖分的思想, 直接剖分后贪心的求最大链即可 代码 #include <bits/stdc++.h> using namespace std; #define ll long long const int maxn = 1e5 +
阅读全文
摘要:题面 传统 T4 找不到原题 挂个 pdf 题面下载 算法 不容易想到把出发点, 有被困同伴的人称作关键点 那么只需要求出关键点之间, 关键点到任意一个终点的最短距离, 然后在搜索即可求解 dijkstra 算法求单源最短路 \(n > 10^3\), 显然会 T 飞 dijkstra 算法求单源最
阅读全文
摘要:吐槽 讲真这个题也没说 \(R\) 和 \(B\) 不连通啊, 我怎么知道他们还要分开 \(\cdots\) 算法 贪心 总结 对于最优非 dp 策略题 考虑分多钟可能的情况求最小值, 而不是死去推 dp
阅读全文
摘要:算法 \(\mathcal{O}(n \log n)\) 算法, \(95pts\) 观察题目,发现题目要求我们求 \(\gcd\) 不等于 \(1\) 的一条最长链 考虑将每个数分解质因数 对于每一个 \(1 \sim k\) 中的质数, 将所有含有这个质因子的数加入一颗虚树, 求最长链即可, 经
阅读全文
摘要:算法 显然为 dp 状态设计 \(dp_{i, j}\) 表示在第 \(i\) 个获得能力点的地方, 之前智慧能力值为 \(j\), 时的最大分数 状态转移 显然需要从 \(dp_{i - 1, j}\) 转移而来 枚举 \(j \in [0, i)\) 则有(注意取 \(\max\) 操作要与自己
阅读全文
摘要:题意转化 找一些相邻的数(其中相邻定义为递增序下任意相邻两数差 \(\leq 1\)) 求相邻数中, 不同数字有 \(k\) 种, 取到数字个数的最大值 算法 容易想到按顺序排列 观察到有点像滑动窗口, 考虑用队列维护一个出现不同数字次数为 \(k\) 的区间, 再计算 代码 来自 转载地址 voi
阅读全文

浙公网安备 33010602011771号