这题是贪心。
我们按 k 从小到大排序,那么长度大的和长度小的如果有公共元素的话,长度小的一定是长度大的子集。
这样的话,我们对每个值记录找到的最晚的那个人(贪心),然后暴力判断。
那么对于和集合相关题目,我们要多关注 集合的大小 ,这样就很有可能出现 交叉 的情况,是本题解题的关键。
我想这道题难倒我的原因在于 数据规模 ,但是如果我们按 关键信息 排序,就会找到解题路径。
这种题目的逻辑链条往往不长,但是 要想到第一步转化 。
那么我们就要积累 做杂题的经验 ,锻炼 破题 的能力。
#include#define fi first #define se second #define ll long long using namespace std; const int N=1e6+5; int T,n,vis[N],pre[N],Rec[N]; vector g[N]; struct node{ int k,id; bool operator <(const node &a)const { return k


![【题解】[NOI Online 2022 提高组] 讨论 【题解】[NOI Online 2022 提高组] 讨论](http://www.mshxw.com/aiimages/31/779611.png)
