一群RE,一群WA,1点AC,42分,求大佬指点qwq
查看原帖
一群RE,一群WA,1点AC,42分,求大佬指点qwq
729457
ACehomoxue楼主2023/1/28 23:18

第一点nlogn实在不会,就用的n^2

就是不知道为啥有很多RE

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e4+10;
int n=1,pos[maxn],sum=1,ans,cur[maxn],dp[maxn];
void dfs(int l,int r,int num){
    int mid=(l+r)/2;
    if(l==r) cur[l]=num;
    else if(cur[l]>num) cur[l]=num;
    else if(num<cur[mid])  dfs(l,mid,num);
    else dfs(mid+1,r,num);
}
int dp_(int r,int num){
    int a=0;
    for(int i=1;i<=r;i++) if(pos[i]>=num&&dp[i]>dp[a]) a=i;
    return a; 
}
int main() {
    cin.tie(0);
	cout.tie(0);
    int num;
    while(cin>>num) pos[n++]=num;
    n--;
    pos[0]=-1;
    for(int i=2;i<=n;i++){
        dp[i]=dp[dp_(i-1,pos[i])]+1;
        if(dp[i]>sum) sum=dp[i];
    }
    cout<<sum<<endl;
    for(int i=1;i<=n;i++){
        if(ans==0) {
            ans=1;
            cur[1]=pos[1];
        }
        else if(cur[ans]<pos[i]){
            ans++;
            cur[ans]=pos[i];
        }
        else dfs(1,ans,pos[i]);
    }
    cout<<ans<<endl;
    return 0;
}

2023/1/28 23:18
加载中...