怪盗基德的滑翔翼(还是最长x序列)

 1 //怪盗基德的滑翔翼
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstdlib>
 5 #include<cstring>
 6 using namespace std;
 7 const int maxx=102;
 8 int a[maxx],b[maxx],c[maxx];
 9 int main()
10 {
11     int n,t;
12     scanf("%d",&t);
13     while(t--)
14     {
15         memset(b,0,sizeof(b));
16         memset(c,0,sizeof(c));
17         scanf("%d",&n);
18        for(int i=1;i<=n;i++)
19        scanf("%d",&a[i]);
20        for(int i=1;i<=n;i++)
21        {
22            b[i]=1;
23            for(int j=1;j<=i-1;j++)
24            {
25                if(a[j]<a[i]&&b[i]<b[j]+1)
26                b[i]=b[j]+1;
27            }
28        }
29        for(int i=n;i>=1;i--)
30        {
31            c[i]=1;
32            for(int j=i+1;j<=n;j++)
33            {
34                if(a[j]<a[i]&&c[i]<c[j]+1)
35                c[i]=c[j]+1;
36            }
37        }
38        int maxl=0;
39        for(int i=1;i<=n;i++)
40        {
41            if(b[i]>maxl)maxl=b[i];
42            if(c[i]>maxl)maxl=c[i];
43        }
44        printf("%d\n",maxl);
45     }
46     return 0;
47 }

时间: 2024-12-18 07:35:07

怪盗基德的滑翔翼(还是最长x序列)的相关文章

怪盗基德的滑翔翼 题解

怪盗基德的滑翔翼 总时间限制:  1000ms 内存限制:  65536kB 描述 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯.而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼. 有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了.不得已,怪盗基德只能操作受损的滑翔翼逃脱. 假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同.初始时,

4977:怪盗基德的滑翔翼

4977:怪盗基德的滑翔翼 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯.而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼. 有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了.不得已,怪盗基德只能操作受损的滑翔翼逃脱. 假设城市中一共有N幢建筑排成一条线

(动态规划)4977:怪盗基德的滑翔翼

描述 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯.而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼. 有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了.不得已,怪盗基德只能操作受损的滑翔翼逃脱. 假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同.初始时,怪盗基德可以在任何一幢建筑的顶端.他可以选择一个方向逃跑,但是不能中途改变方向

2-6-4977:怪盗基德的滑翔翼

描述 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯.而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼. 有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了.不得已,怪盗基德只能操作受损的滑翔翼逃脱. 假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同.初始时,怪盗基德可以在任何一幢建筑的顶端.他可以选择一个方向逃跑,但是不能中途改变方向

倒计时四天——4977:怪盗基德的滑翔翼

代码: #include<cstdio> #include<iostream> #include<cmath> using namespace std; int h[101],a[101]; int main(){ int k,n; int i,j,jj,ma=0,ans=0; cin>>k; for(i=1;i<=k;i++){ cin>>n; for(j=1;j<=n;j++)cin>>h[j]; for(j=1;j&

最长增长序列的长度(LIS)

我最早的思路是反过来遍历,结果总是不对.因为老是觉得动态规划就是列递归,所以一心琢磨着怎样递归,导致一直不对. 正确的思路应该是什么呢?应该是尝试用符号表示其最优的状态和其子状态,然后找出状态之间转移的方法.最后实现这个方法. 最长增长序列的最优状态是什么样子呢?既然是最长,肯定是要容纳尽可能多的元素,怎样容纳尽可能多的元素呢?那就是较小值尽可能小. 那么遍历到的新元素就存在两种情况: 1. 新元素比已知当前 LIS  中的每个元素都要大,那毫无疑问应该加入 LIS. 2. 新元素比当前 LIS

zoj1986 Bridging Signals (dp,最长递增序列,LIS)

A - Bridging Signals Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Submit Status Practice ZOJ 1986 Description 'Oh no, they've done it again', cries the chief designer at the Waferland chip factory. Once more the routing designer

uva103(最长递增序列,dag上的最长路)

题目的意思是给定k个盒子,每个盒子的维度有n dimension 问最多有多少个盒子能够依次嵌套 但是这个嵌套的规则有点特殊,两个盒子,D = (d1,d2,...dn) ,E = (e1,e2...en) 只要盒子D的任意全排列,小于盒子E,那么就说明 盒子D能放入盒子E中,其实就是将两个盒子的维度排序,如果前一个盒子的维度依次小于后一个盒子,那么就说明前一个盒子能放入后一个盒子中 这个题目能够转化为最长递增子序列. 首先将盒子的维度从小到大排序,然后将k个盒子,按照排序后的第一维度从小到大排

[LeetCode] Longest Consecutive Sequence 求最长连续序列

Given an unsorted array of integers, find the length of the longest consecutive elements sequence. For example, Given [100, 4, 200, 1, 3, 2], The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4. Your algorithm should run i