当前位置:网站首页>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 
边栏推荐
- Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败
- Mysql怎样控制replace替换的次数?
- 带你掌握三层架构(建议收藏)
- Lavarel之环境配置 .env
- c#利用 TCP 协议建立连接
- PostgreSQL array type, each splice
- 数据流图,数据字典
- Cesium 已知一点经纬度和距离求另一个点的经纬度
- Regular expression integer positive integer some basic expressions
- 請問,在使用flink sql sink數據到kafka的時候出現執行成功,但是kafka裏面沒有數
猜你喜欢

Evolution of customer service hotline of dewu

手把手教会:XML建模

"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?

一个简单LEGv8处理器的Verilog实现【四】【单周期实现基础知识及模块设计讲解】

Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance

Selenium库

【立体匹配论文阅读】【三】INTS

UML sequence diagram (sequence diagram)

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

118. 杨辉三角
随机推荐
股票开户首选,炒股交易开户佣金最低网上开户安全吗
SSRF vulnerability file pseudo protocol [netding Cup 2018] fakebook1
Cargo placement problem
docker部署oracle
Seven propagation behaviors of transactions
Selenium库
现在网上开户安全么?那么网上开户选哪个证券公司?
FCOS3D label assignment
[Reading stereo matching papers] [III] ints
Redis can only cache? Too out!
PHP中用下划线开头的变量含义
requires php ~7.1 -&gt; your PHP version (7.0.18) does not satisfy that requirement
PostgreSQL array type, each splice
2022-7-6 sigurg is used to receive external data. I don't know why it can't be printed out
TPG x AIDU | AI leading talent recruitment plan in progress!
参数关键字Final,Flags,Internal,映射关键字Internal
交换机和路由器的异同
【日常训练】648. 单词替换
How does MySQL control the number of replace?
请问,redis没有消费消息,都在redis里堆着是怎么回事?用的是cerely 。