当前位置:网站首页>最长上升子序列模型 AcWing 1014. 登山
最长上升子序列模型 AcWing 1014. 登山
2022-07-07 12:08:00 【T_Y_F666】
最长上升子序列模型 AcWing 1014. 登山
原题链接
算法标签
DP 线性DP 最长上升子序列
思路
分别求以i结尾上升序列,以i结尾反向上升即下降序列,以i为分割点先上升后下降序列,求最大值即可。
代码
#include<bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>=b;--i)
using namespace std;
const int N = 1005, INF = 0x3f3f3f3f;
int f[N], f1[N], a[N];
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
void put(int x) {
if(x<0) putchar('-'),x=-x;
if(x>=10) put(x/10);
putchar(x%10^48);
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n=read();
rep(i, 1, n+1){
a[i]=read();
}
int ans=0, ans1=0, ans2=0;
// 以i结尾上升序列
rep(i, 1, n+1){
f[i]=1;
rep(j, 1, i){
if(a[j]<a[i]){
f[i]=max(f[i], f[j]+1);
}
}
ans1=max(ans1, f[i]);
}
// 以i结尾反向上升即下降序列
Rep(i, n, 0){
f1[i]=1;
Rep(j, n, i+1){
if(a[j]<a[i]){
f1[i]=max(f1[i], f1[j]+1);
}
}
ans2=max(ans2, f1[i]);
}
// 先上升 后下降序列
rep(i, 1, n+1){
ans=max(ans, f[i]+f1[i]-1);
}
printf("%lld\n", max({ans, ans1, ans2}));
}
与y总代码思路一致
y总代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int n;
int h[N];
int f[N], g[N];
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i ++ ) scanf("%d", &h[i]);
for (int i = 0; i < n; i ++ )
{
f[i] = 1;
for (int j = 0; j < i; j ++ )
if (h[i] > h[j])
f[i] = max(f[i], f[j] + 1);
}
for (int i = n - 1; i >= 0; i -- )
{
g[i] = 1;
for (int j = n - 1; j > i; j -- )
if (h[i] > h[j])
g[i] = max(g[i], g[j] + 1);
}
int res = 0;
for (int i = 0; i < n; i ++ ) res = max(res, f[i] + g[i] - 1);
printf("%d\n", res);
return 0;
}
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
边栏推荐
- AI talent cultivation new ideas, this live broadcast has what you care about
- Use of polarscatter function in MATLAB
- 干货|总结那些漏洞工具的联动使用
- Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
- . Net core about redis pipeline and transactions
- 作战图鉴:12大场景详述容器安全建设要求
- [daily training -- Tencent select 50] 231 Power of 2
- [daily training] 648 Word replacement
- "New red flag Cup" desktop application creativity competition 2022
- Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
猜你喜欢
The delivery efficiency is increased by 52 times, and the operation efficiency is increased by 10 times. See the compilation of practical cases of financial cloud native technology (with download)
Leecode3. Longest substring without repeated characters
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
Thread pool reject policy best practices
2022-7-6 sigurg is used to receive external data. I don't know why it can't be printed out
Evolution of customer service hotline of dewu
10 pictures open the door of CPU cache consistency
Did login metamask
LeetCode简单题分享(20)
.net core 关于redis的pipeline以及事务
随机推荐
2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天
华为镜像地址
requires php ~7.1 -&gt; your PHP version (7.0.18) does not satisfy that requirement
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
Help tenants
Environment configuration of lavarel env
高等數學---第八章多元函數微分學1
2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
. Net core about redis pipeline and transactions
toRaw和markRaw
Parameter keywords final, flags, internal, mapping keywords internal
"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?
室內ROS機器人導航調試記錄(膨脹半徑的選取經驗)
FCOS3D label assignment
Use of polarscatter function in MATLAB
2022-7-6 beginner redis (I) download, install and run redis under Linux
请问,我kafka 3个分区,flinksql 任务中 写了 join操作,,我怎么单独给join
requires php ~7.1 -&gt; your PHP version (7.0.18) does not satisfy that requirement
[1] Basic knowledge of ros2 - summary version of operation commands
Redis 核心数据结构 & Redis 6 新特性详