会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
两条稿能互换,当且仅当质量、热度都满足 pi≤pj 且 hi≤hj,也就是二维偏序上可比。互换任意多次,等价于在「可比图」的连通块里任意重排这些位置上的稿件。
- 先把稿件看成平面上的点 (pi,hi)。两点可比就连边。连通块内部生成全对称群,块与块之间过不去。
- 因此对每个连通块,块内现有热度的多重集必须等于这些下标上目标热度的多重集,否则该块无法对齐。
- m 到 105,不能建显式图。按 p 升序(相同则按 h 升序)扫描:扫描到 i 时,所有已处理且「块内最小热度 ≤hi」的连通块都能和 i 合并。用最小堆懒删除配合并查集即可。
- 并完后按根收集 h 与 t,排序比较。常见假解:只判断全局热度多重集是否等于目标、把不可比点也连上、输出
Yes/yes。
待发热度重排
题目内容
短视频后台里躺着 m 条待发稿,第 i 条带着质量分 pi 和热度分 hi。策划给了一份目标热度排列 t1,t2,…,tm,要求排完之后每个位置上的热度刚好等于 t。
运营只能按下面的规则对调两条稿件:当且仅当 pi≤pj 且 hi≤hj 时,才允许把第 i 条和第 j 条互换位置。对调可以做任意多次。
问能否让最终的热度序列与 t 完全一致。能则输出 YES,不能则输出 NO(大小写必须一致)。
输入描述
第一行一个整数 q,表示询问组数。(1≤q≤102)
接下来 q 组,每组三行:
- 第一行一个整数 m,表示待发条数。(1≤m≤100000)
- 第二行 2m 个整数,按 p1,h1,p2,h2,…,pm,hm 给出每条稿的质量分与热度分。(1≤pi,hi≤100000)
- 第三行 m 个整数 ti,即目标热度排列。(1≤ti≤100000)
保证全部询问的 m 之和不超过 1000000。
输出描述
对每组询问输出一行 YES 或 NO。
样例1
输入
3
2
1 1 2 3
3 1
2
1 5 2 1
1 5
3
1 4 2 1 3 5
1 4 5
输出
YES
NO
YES
说明
- 第一组:(1,1) 与 (2,3) 可以互换,热度能变成 3 1。
- 第二组:(1,5) 与 (2,1) 互不可比,对调不了,热度变不成 1 5。
- 第三组:三条都能经由可比对调连成一块,热度多重集与目标相同,故可以重排。
样例2
输入
2
1
7 7
7
3
1 5 2 3 3 1
1 3 5
输出
YES
NO
说明
- 第一组:只有一条,热度已是 7。
- 第二组:质量升、热度降,两两不可比,只能保持 5 3 1,对不齐 1 3 5。