自学内容网 自学内容网

最长下降序列

在这里插入图片描述
如何理解这个题目呢,我们可以每个人的分数放到排名上,然后求解最长下降序列即可

#include<bits/stdc++.h>
using namespace std;

int n; 
const int N = (int)1e5 + 5;
int a[N];
int b[N];
int d[N];
int dp[N];
int t;

int main() {
cin >> t;
while (t--) {
cin >> n;
for (int i = 1; i <= n; i++) {
int c, d;
cin >> c >> d;
a[i] = c - d;
}
for (int i = 1; i <= n; i++) {
cin >> b[i];
d[i] = a[b[i]];
}
int ans = 0;
memset(dp, 0, sizeof dp);
dp[1] = 1;
for (int i = 2; i <= n; i++) {
for (int j = 1; j < i; j++) {
if (d[i] <= d[j]) {
dp[i] = max(dp[i], dp[j] + 1);
}
else dp[i] = 1;
}
}
cout << n-dp[n];
}
return 0;
}

原文地址:https://blog.csdn.net/wniuniu_/article/details/140418799

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!