首页 > 其他分享 >怪盗基德的滑翔翼

怪盗基德的滑翔翼

时间:2023-09-23 19:46:42浏览次数:39  
标签:include int 滑翔翼 怪盗 -- 基德

怪盗基德的滑翔翼
题目概述:怪盗基德可以选择一个方向,并沿着该方向进行滑行,规定他只能从较高的楼房移动到较低的楼房,问他最多可以走过多少栋楼房。
解题思路:很容易将该题抽象为最长上升子序列模型,需要注意的是本题可以选择滑行的方向,也就是正反方向分别进行dp,取最大值

#include <iostream>
#include <algorithm>
#include <cstring>
#include <set>
#include <vector>
#include <map>
#include <set>

using namespace std;

typedef long long LL;
typedef pair<int,int>PII;
const int N = 110;

int h[N];
int f[N],g[N];

void solve(){
	int n;
	cin >> n;

	for(int i = 1; i <= n; i ++)cin >> h[i];

	int res = 0;
  //正向操作
	for(int i = 1; i <= n; i ++){
		f[i] = 1;
		for(int j = 1; j < i; j ++){
			
			if(h[j] < h[i])f[i] = max(f[i],f[j] + 1);
		}
	}
//反向操作
	for(int i = n; i >= 1; i --){
		g[i] = 1;
		for(int j = n; j > i; j --){
			
			if(h[j] < h[i])g[i] = max(g[i],g[j] + 1);
		}
	}

	for(int i = 1; i <= n; i ++)res = max({res,f[i],g[i]});
	cout << res << endl;
}

int main(){
	int T;
	cin >> T;

	while(T --){
		solve();
	}
	
}

标签:include,int,滑翔翼,怪盗,--,基德
From: https://www.cnblogs.com/dengch/p/17724950.html

相关文章

  • 怪盗基德的滑翔翼C++
    题目描述】怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的......
  • 怪盗基德的滑翔翼
    正着求一遍最长上升子序列问题,再反着求一遍最长上升子序列问题#include<bits/stdc++.h>usingnamespacestd;constintN=210;intn;inta[N];intf[N];intmain......
  • HDU-4552-怪盗基德的挑战书
    怪盗基德的挑战书TimeLimit:3000/1000ms(Java/Other)MemoryLimit:65535/32768K(Java/Other)TotalSubmission(s):26AcceptedSubmission(s):10Font:Time......
  • dp 2 怪盗基德的滑翔翼
    题目链接:http://noi.openjudge.cn/ch0206/4977/最长上升子序列的模型往左边跳,就是最长上升子序列;往右边跳是最长下降子序列,只要reverse一下,就可以转换成最长上升子序......