zoukankan      html  css  js  c++  java
  • CodeforcesD Bubble Sort Graph

    题意:对一个序列冒泡排序,交换(a[i], a[j])的时候对i, j建一条边,问最小的独立点集是什么

    题解:直接建边n*n, 可以发现,独立集的每一个点都是没有边和其他点相连的,而只要a[i]>a[j]就代表i,  j有关系,那么a[i]<a[j]就代表i, j没有关系,也就是找到最多的点没有关系 == 最长上升子序列.....

    #include <bits/stdc++.h>
    #define ll long long
    #define maxn 100100
    #define INF 0x7f7f7f7f
    using namespace std;
    int a[maxn], dp[maxn], n, t, ans;
    int main(){
        scanf("%d", &n);
        for(int i=0;i<n;i++) scanf("%d", &a[i]);
        memset(dp, INF, sizeof(dp));
        for(int i=0;i<n;i++){
            t = lower_bound(dp+1, dp+n+1, a[i])-dp;
            ans = max(ans, t);
            dp[t] = a[i];
        }
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    CSS语言
    HTML语言
    JDBC技术
    存储过程
    Oracle和Mysql数据库技术
    正则表达式
    反射
    XML技术
    设计模式初步专题(自学,适合初级.更深入的会在框架阶段)
    线程池专题(自学)
  • 原文地址:https://www.cnblogs.com/Noevon/p/8412661.html
Copyright © 2011-2022 走看看