社区讨论

求助(全wa)

P1020[NOIP 1999 提高组] 导弹拦截参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m56iu3ur
此快照首次捕获于
2024/12/27 16:59
去年
此快照最后确认于
2025/11/04 12:18
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N];
vector<int> v;
int main() {
	int n = 0;
	int t;
	while (cin >> t) 
		a[++ n] = t;	
	for (int i = 1; i <= n; i ++) {
		if (v.empty() || v.back() > a[i])
			v.push_back(a[i]);
		else {
			int l = 1, r = v.size();
			while (l < r) {
				int mid = l + r >> 1;
				if (a[mid] > a[i])
					l = mid + 1;
				else
					r = mid;
			}
			v[l] = a[i];
		}
	}
	cout << v.size() << endl;
	v.clear();
	for (int i = 1; i <= n; i ++) {
		if (!v.size() || v.back() < a[i])
            v.push_back(a[i]);
        else {
            int position = upper_bound(v.begin(), v.end(), a[i]) - v.begin();
            v[position] = a[i];
        }
	}
	cout << v.size();
	return 0;
}

回复

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

正在加载回复...