array array array hdu-6197 (DP之最长递增子序列)

xiaoxiao2021-02-28  31

题目链接:array array array

题解:直接套用最长递增子序列模板。

代码:

#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define INF 99999999 int main() { int t; scanf("%d",&t); int dp[110000],dp2[110000]; int a[110000],b[110000],n,k,i,j; while(t--) { scanf("%d%d",&n,&k); for(i=0; i<n; i++) { scanf("%d",&a[i]); } int l=0; for(i=n-1; i>=0; i--) b[l++]=a[i]; fill(dp,dp+n,INF); for(i=0; i<n; i++) *lower_bound(dp,dp+n,a[i])=a[i]; int max1=lower_bound(dp,dp+n,INF)-dp; fill(dp2,dp2+n,INF); for(i=0; i<n; i++) *lower_bound(dp2,dp2+n,b[i])=b[i]; int max2=lower_bound(dp2,dp2+n,INF)-dp2; if((n-max1)<=k||(n-max2)<=k) printf("A is a magic array.\n"); else printf("A is not a magic array.\n"); } }
转载请注明原文地址: https://www.6miu.com/read-2619084.html

最新回复(0)