思路:如果在区间[l,r]之间有一个位置p,a[p]是唯一的,那么容易知道,左端点取[l,p-1],右端点取[p+1,r]都满足要求 即都是好序列,那么只需要考虑两个区间是不是分别满足子区间都是好序列都可以。所以处理出来离每个数字左右两端最近的位置,dfs即可。 #include<bits/stdc++.h> using namespace std; typedef long long ll; map<int,int> mp; int a[1<<18],l[1<<18],r[1<<18]; bool dfs(int ll,int rr...