题意:对一个序列冒泡排序,交换(a[i], a[j])的时候对i, j建一条边,问最小的独立点集是什么
题解:直接建边n*n, 可以发现,独立集的每一个点都是没有边和其他点相连的,而只要a[i]>a[j]就代表i, j有关系,那么a[i]<a[j]就代表i, j没有关系,也就是找到最多的点没有关系 == 最长上升子序列.....
#include#define ll long long#define maxn 100100#define INF 0x7f7f7f7fusing namespace std;int a[maxn], dp[maxn], n, t, ans;int main(){ scanf("%d", &n); for(int i=0;i