题意
对于一个
1
n
1~n
1 n的排列C
每个
i
i
i,都满足
C
[
i
]
<
=
A
[
i
]
C[i]<=A[i]
C[i]<=A[i]
且要满足
m
m
m个限制
i
,
j
i,j
i,j
C
[
i
]
<
C
[
j
]
C[i]<C[j]
C[i]<C[j]
第一问:输出一组合法的
C
C
C
第二问:对于每个
i
i
i,合法的
C
i
Ci
Ci的最小值
思路
根据限制建立正图和返图
真正的
A
[
i
]
A[i]
A[i]其实是反中儿子的真正的
A
[
i
]
A[i]
A[i]的最小值
−
1
-1
−1
在反图跑一遍
s
p
f
a
spfa
spfa求出真正的
A
A
A
明显,正图中一个点的
A
A
A一定比祖先的大,祖先关系也明确了
考虑第一问:
根据A从小到大输出,由于肯定有解,这样贪心肯定满足A限制,同时祖先也肯定先比儿子取,满足后一种限制。
考虑第二问:
预处理,对于每个
i
i
i,放进
A
[
i
]
A[i]
A[i]的
v
e
c
t
o
r
vector
vector中
对于每个
i
i
i,考虑倒着选,强行不能选
i
i
i及其祖先
然后倒着枚举,每次只要放已经符合条件的进去就好
假如剩下未填的数大于可填的数,退出
反思
一开始没能抓住处理完
A
A
A后已明确祖先关系这一点
导致中间卡了很久
[NOI2010] 航空管制
最新推荐文章于 2023-05-22 22:23:02 发布