![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
拓扑
Love_xyh
这个作者很懒,什么都没留下…
展开
-
CF1385E Directing Edges
胡编乱造的定理一:给定一个无向图,对边标记方向,则一定可以有方法使得图中无环。当时想到的做法是:先将有向边进行拓扑排序,根据定理一,如果此时出现环那么就puts(“NO”),否则就根据之前拓扑排序得到的拓扑序,由小到大连边。因为我们知道,DAG中均是由拓扑序小的点连向拓扑序大的点。按照拓扑序的大小,对无向图标记方向,貌似之前已经做到过一次了。希望下次类似的题能想到这个方法吧。#include <bits/stdc++.h>using namespace std;const int N=原创 2020-09-08 02:30:21 · 114 阅读 · 0 评论 -
CF1388D Captain Flint and Treasure
可以发现题目给出的是一个森林,对于每一棵树进行一次记忆化,记录走完当前节点子树后,当前节点的最大累计值。(第一问)对于第二问,我们每次先遍历能对当前节点做出贡献的子节点(即权值为正),然后对于不能对当前节点做出贡献的子节点放在后面遍历(即无关紧要了)。#include <bits/stdc++.h>#define int long longusing namespace std;const int N=2e5+5;int n,ans,tot;int a[N],b[N],sum[N]原创 2020-08-28 22:55:01 · 172 阅读 · 0 评论 -
CF463D Gargari and Permutations
题意:给你k个长度为n的排列,求这些排列的最长公共子序列的长度。n<=1000,2<=k<=5。记得之前做过O(n^2)的求两个排列或两个序列的最长公共子序列的长度,现在有5个排列,是n的5次方吗?观察一下它们之间的拓扑关系。如果任意两个数,在所有排列中的相对位置均相同,则可以由前一个点向后一个点连一条边,然后在DAG上跑dp即可。#include <bits/...原创 2020-03-13 16:16:25 · 112 阅读 · 0 评论