社区讨论

60pts求助

P1091[NOIP 2004 提高组] 合唱队形参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lq84jici
此快照首次捕获于
2023/12/16 21:59
2 年前
此快照最后确认于
2023/12/17 08:37
2 年前
查看原帖
就是想把这个队形拆分成两半,然后看看每一边能提取出多长的递增子序列,但是60pts ,WA了4个点 代码```cpp

include <stdio.h>

int n; int arr[114]; int left[51]; int right[51]; int findLengthOfLIS(int nums[], int numsSize) { int dp[numsSize];
CPP
for (int i = 0; i < numsSize; i++) {
    dp[i] = 1;
}

for (int i = 1; i < numsSize; i++) {
    for (int j = 0; j < i; j++) {
        if (nums[i] > nums[j]) {
            if (dp[i] < dp[j] + 1) {
                dp[i] = dp[j] + 1;
            }
        }
    }
}

int maxLength = 0;
for (int i = 0; i < numsSize; i++) {
    maxLength = maxLength > dp[i] ? maxLength : dp[i];
}

return maxLength;
} int main(){ scanf("%d",&n); for(int i=0;i<n;i++)scanf("%d",&arr[i]); int len=n/2; for(int i=0;i<len;i++){ left[i]=arr[i]; } for(int i=0;i<len;i++){ right[len-i-1]=arr[i+len]; } printf("%d",n-findLengthOfLIS(left,len)-findLengthOfLIS(right,len));
CPP
return 0;
}
CPP

回复

1 条回复,欢迎继续交流。

正在加载回复...