当前位置:网站首页>The longest ascending subsequence model acwing 482 Chorus formation
The longest ascending subsequence model acwing 482 Chorus formation
2022-07-07 14:13:00 【T_ Y_ F666】
Longest ascending subsequence model AcWing 482. Chorus formation
Original link
Algorithm tags
DP linear DP Longest ascending subsequence
Ideas
Ask for i Ending ascending sequence , With i The reverse rising at the end is the descending sequence , Get to i It is a sequence in which the dividing point rises first and then falls , Taking the maximum , Reduce the total by the maximum .
Code
#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;
// With i Ending ascending sequence
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]);
}
// With i The reverse rising at the end is the descending sequence
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]);
}
// Go up first Post descent sequence
rep(i, 1, n+1){
ans=max(ans, (f[i]+f1[i]-1));
}
printf("%lld\n", n-ans);
}
And y The general code is consistent
y Master code
#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", n - res);
return 0;
}
Originality is not easy.
Reprint please indicate the source
If it helps you Don't forget to praise and support
边栏推荐
- Battle Atlas: 12 scenarios detailing the requirements for container safety construction
- Redis can only cache? Too out!
- Realization of search box effect [daily question]
- Lavarel之环境配置 .env
- CSMA/CD 载波监听多点接入/碰撞检测协议
- 2022-7-7 Leetcode 844. Compare strings with backspace
- 最长上升子序列模型 AcWing 1012. 友好城市
- Clickhouse (03) how to install and deploy Clickhouse
- MySQL "invalid use of null value" solution
- Vmware共享主机的有线网络IP地址
猜你喜欢
118. 杨辉三角
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
"New red flag Cup" desktop application creativity competition 2022
PERT图(工程网络图)
docker部署oracle
Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance
Redis can only cache? Too out!
常用数字信号编码之反向不归零码码、曼彻斯特编码、差分曼彻斯特编码
手把手教会:XML建模
Vmware共享主机的有线网络IP地址
随机推荐
Laravel5 call to undefined function OpenSSL cipher IV length() error php7 failed to open OpenSSL extension
Assign a dynamic value to the background color of DataGrid through ivalueconverter
2022-7-6 Leetcode 977. Square of ordered array
高等数学---第八章多元函数微分学1
请问,我kafka 3个分区,flinksql 任务中 写了 join操作,,我怎么单独给join
GVIM [III] [u vimrc configuration]
PC端页面如何调用QQ进行在线聊天?
mysql导入文件出现Data truncated for column ‘xxx’ at row 1的原因
Help tenants
SAKT方法部分介绍
Codes de non - retour à zéro inversés, codes Manchester et codes Manchester différentiels couramment utilisés pour le codage des signaux numériques
参数关键字Final,Flags,Internal,映射关键字Internal
MySQL "invalid use of null value" solution
Huawei image address
Environment configuration of lavarel env
Realization of search box effect [daily question]
IP address home location query full version
Cesium 已知一点经纬度和距离求另一个点的经纬度
Laravel form builder uses
Evolution of customer service hotline of dewu