题解:P4704 太极剑

· · 题解

似乎是一个非常简单的做法。

我们观察一下,可以发现若干条边可以同时被切掉,当且仅当其中不存在三条边形如样例图:

考虑能选出最多的边形如上图,那么显然答案至少是边数除以二上取整。猜测这就是答案,然后写一个很简单的贪心(可以考虑转为序列区间,直接求出从每个点开始贪的结果即可,因为可能有一个大区间包含所有区间),发现过了。

时间复杂度线性。

证明我阿巴阿巴一下,不包对过了就不关心了.jpg。有问题或者 hack 请指出,有严谨证明请@我/dk。考虑一组最优解,满足每条边的内部不存在更小的边(否则调整),称这些边是关键的。只关注只和一条或者相邻的关键边相交的非关键边,那么不存在一条“增广路”,然后大概按每条路径从头到尾每次切两条边,感觉很对?