文章
2
粉丝
89
获赞
1
访问
1.8k
/*找最高的同学为Ti,此时的值一定大于找其他同学的
然后去掉中间的同学从两边开始找,
最后结果是总人数-(两边加起来再加1)*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
using namespace std;
const int maxn=1100;
int dp[maxn];
int a[maxn];
int t[maxn];
int pos1;
vector<int> v;
int LIS(int n){
int len=1;
dp[len]=a[1];
for(int i=2;i<=n;i++){
if(a[i]>dp[len]){
dp[++len]=a[i];
}else{
int pos=lower_bound(dp+1,dp+len,a[i])-dp;
dp[pos]=a[i];
}
}
return len;
}
int main(){
int N;
while(scanf("%d",&N)!=EOF){
&...
登录后发布评论
找最高点不一定就是最优解,反例:130 220 135 140 180 140
这个思路有问题,不一定最高点是转折点,有可能不包含最高点反而序列最长