社区讨论
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];
CPPfor (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));
CPPreturn 0;
}
CPP回复
共 1 条回复,欢迎继续交流。
正在加载回复...