当前位置:网站首页>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
边栏推荐
- Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
- Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
- 请问,我kafka 3个分区,flinksql 任务中 写了 join操作,,我怎么单独给join
- Introduction to sakt method
- . Net core about redis pipeline and transactions
- Is the spare money in your hand better to fry stocks or buy financial products?
- Cesium knows the longitude and latitude of one point and the distance to find the longitude and latitude of another point
- Clickhouse (03) how to install and deploy Clickhouse
- Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
- Laravel Form-builder使用
猜你喜欢
Parsing of XML files
一个简单LEGv8处理器的Verilog实现【四】【单周期实现基础知识及模块设计讲解】
Evolution of customer service hotline of dewu
Vscode configuration uses pylint syntax checker
高等数学---第八章多元函数微分学1
Horizontal of libsgm_ path_ Interpretation of aggregation program
Verilog implementation of a simple legv8 processor [4] [explanation of basic knowledge and module design of single cycle implementation]
Hands on Teaching: XML modeling
Flask session forged hctf admin
Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance
随机推荐
IP and long integer interchange
The meaning of variables starting with underscores in PHP
UML sequence diagram (sequence diagram)
Excuse me, why is it that there are no consumption messages in redis and they are all piled up in redis? Cerely is used.
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
Is the spare money in your hand better to fry stocks or buy financial products?
供应链供需预估-[时间序列]
ARM Cortex-A9,MCIMX6U7CVM08AD 处理器应用
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
SAKT方法部分介绍
WPF DataGrid realizes the UI interface to respond to a data change in a single line
postgresql array类型,每一项拼接
最长上升子序列模型 AcWing 1012. 友好城市
js 获取当前时间 年月日,uniapp定位 小程序打开地图选择地点
Horizontal of libsgm_ path_ Interpretation of aggregation program
内存溢出和内存泄漏的区别
Huawei image address
The difference between memory overflow and memory leak
手把手教会:XML建模
gvim【三】【_vimrc配置】