问个问题
  • 板块灌水区
  • 楼主58874__15157
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/1/19 21:15
  • 上次更新2024/1/20 08:34:13
查看原帖
问个问题
1113269
58874__15157楼主2024/1/19 21:15

P1020

共20个点,对了十个。

下面是超时代码:

#include<bits/stdc++.h>
using namespace std; 
int ans,sum,a[100005],f1[100005],f2[100005];
int main() {
	int n = 1; 
	while (cin >> a[n++]) {
		;
	}
	n--;
	for (int i = 1;i < n;i++) {
		f1[i] = 1;
		f2[i] = 1;
		for (int j = 1;j < i;j++) {
			if (a[j] >= a[i]) {
				f1[i] = max(f1[i],f1[j] + 1);
			}
			if (a[j] < a[i]) {
				f2[i] = max(f2[i],f2[j] + 1);
			}
		}
	}
	for (int i = 1;i < n;i++) {
		ans = max(ans,f1[i]);
	}
	for (int i = 1;i < n;i++) {
		sum = max(sum,f2[i]);
	}
	cout << ans << endl << sum; 
	return 0;
}

为什么这题不用二分会TLE??

2024/1/19 21:15
加载中...