站外题求助
  • 板块学术版
  • 楼主linxuanrui
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/2/3 10:10
  • 上次更新2023/10/24 01:56:47
查看原帖
站外题求助
857323
linxuanrui楼主2023/2/3 10:10

image

#pragma GCC optmize(2)
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,a[300001],num[300001];
int LIS(int *a,int l,int r){
	memset(num,0x3f,sizeof(num));
	int ans = 1;
	num[l] = a[l];
	for(int i = l + 1;i < r;i++){
		if(a[i] > num[ans])num[++ans] = a[i];
		else num[lower_bound(num + l,num + r,a[i]) - num] = a[i];
	}
	return ans;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> k;
	for(int i = 1;i <= n;i++)cin >> a[i];
	cout << LIS(a,1,k) + LIS(a,k + 1,n);
}

ps:

以上代码10pts,请大佬帮忙看看。

本人亲自试过,用 O(n2)O(n^2) 的代码会60TLE,所以请不要发 O(n2)O(n^2) 的代码。

2023/2/3 10:10
加载中...