sort 20f

B3637 最长上升子序列

Lolitan @ 2023-10-04 13:27:47

#include<bits/stdc++.h>
using namespace std;
int ans,n,maxn;
int a[10010];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a,a+3);
    for(int i=1;i<=n;i++){
        if(maxn<a[i]) {
            maxn=a[i],ans++;
        }
    }

    cout<<ans;

    return 0;
}

by DevilsFlame @ 2023-10-04 13:36:21

这是动态规划吧,不是排序


by Clost_Fynie @ 2023-10-04 13:39:00

很聪明

建议学一下动态规划

参考代码:

#include <iostream>
using namespace std;
const int N = 5010;
int n;
int a[N];
int f[N];
int main(){
    scanf("%d",&n);
    for(int i = 1;i <= n;i ++) scanf("%d",&a[i]);
    for(int i = 1;i <= n;i ++){
        f[i] = 1;
        for(int j = 1;j <= i;j ++){
            if(a[j] < a[i]) f[i] = max(f[i],f[j] + 1);
        }
    }
    int res = -1;
    for(int i = 1;i <= n;i ++) res = max(res,f[i]);
    printf("%d\n",res);
    return 0;
}

by Argvchs @ 2023-10-04 14:00:13

// Lolitan: 今天看到一个dp题但是我是大老我直接一个sort就能过好吧
#include<bits/stdc++.h>
using namespace std;
// 进行一个ansnmaxna的定义
int ans,n,maxn;
int a[10010];
int main(){
    // 进行一个nai的入
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    // 我们这里对a0到a2进行了一个魔法排序MAGIC SORTT,我们通过这样神仙操作直接就保证了答案正确啊
    sort(a,a+3);
    for(int i=1;i<=n;i++){
        // 这里我们直接写一个贪心好吧
        // 哎贪心怎么能保证正确??,啊是因为我是贪心带师好吧
        if(maxn<a[i]) {
            // ??我们不是求最长怎么还出了个maxn,因为我是大佬,我一眼直接看出这两个等价的
            // XD你们这些凡人是肯定看不懂的,但是我肯定是对的因为我是高贵的大老,咍咍
            maxn=a[i],ans++;
        }
    }
    // 进行一个nas的出
    cout<<ans;

    return 0;
}

by Lolitan @ 2023-10-04 14:49:16

@Argvchs 6


|