首页 > TAG信息列表 > Railway
CF1687B Railway System 题解
题目传送门 可能更好的阅读体验 题目大意 交互题,给定 \(n,m\),代表有一张 \(n\) 个点 \(m\) 条边的带权无向图。 每次询问,可以删除一些边(询问独立),得删掉这些边的最大生成森林。 现在 \(2m\) 次询问内求整张图片的最小生成森林。(最后输出答案不算询问) \(n,m\le 500\) 生成森林的定义BalticOI2017 Railway
看了一眼网上的题解,好像我的做法没有出现(?),并且我的做法好像比较简单易懂(?),不用虚树也不用线段树维护 不难想到,我们可以对于每个副部长的点连成的最短路径(即这个路径里的每条边都是必要的)上+1,然后看有哪些路是\(>=k\)的,但是我们需要不重复不遗漏的把这个路径都走到。于是我们考虑把这【题解】CF1687B Railway System
Sol 首先先用 \(m\) 次查询把每条边的权值弄出来。 然后把边按照权值排序。从小到大依次加入每条边。 当一条边在最后的答案中那么当且仅当 \(x-last=a_i\),其中 \(x\) 为当前询问的答案,\(last\) 为前 \(i-1\) 条边组成的最优答案,\(a_i\) 表示第 \(i\) 条边的权值。 正确性可以考虑CF1423C Dušan's Railway
反正可以直接当 \(k=3\) 去做,然后考虑直接去构造。 首先任意给树找一个根,然后将整棵树拆成几个大小为 \(\sqrt n\) 的子树,将所有这些子树的根 \(u\) 塞到一个点集 \(a\) ,然后将 \(a\) 中的点相互连接,边的数量为 \(\mathcal O(n)\)。 接着,对于点集 \(a\) 中的每个点 \(u\),将 \(u\)#贪心#CF605A Sorting Railway Cars
题目 一个长度为 \(n\) 的排列,每次可以将一个数移至开头或者结尾,问最少多少次使其升序排列 分析 让数字连续的情况尽量多才能让移出来的次数尽量少, 找到最长的数字连续段,若其长度为 \(len\),那么答案为 \(n-len\) 代码 #include <cstdio> #include <cctype> using namespace std;