求助
查看原帖
求助
690669
Beacon_wolf楼主2024/7/19 12:14
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,w[5010],h[5010],dp[5010],ans[5010];
int dfs(int x){
	int maxn;
	if(dp[x]) return dp[x];
	for(int i = 1;i <= n;i++){
		if(w[x] < w[i] && h[x] < h[i]){
			int t = dfs(i);
			if(t > maxn){
				maxn = t;
				ans[x] = i;
			}
		}
	}
	dp[x] = maxn + 1;
	return dp[x];
}
int main(){
	cin >> n >> w[0] >> h[0];
	for(int i = 1;i <= n;i++) cin >> w[i] >> h[i];
	dfs(0);
	cout << dp[0] - 1 << endl;
	int k = 0;
	while(ans[k]){
		cout << ans[k] << " ";
		k = ans[k];
	}
	cout << endl;
	return 0;
} 

本地输出是对的,但是 CF 显示样例输出是错的。

2024/7/19 12:14
加载中...