问题 G: 艰难取舍

编程入门 行业动态 更新时间:2024-10-15 18:26:12

问题 G: <a href=https://www.elefans.com/category/jswz/34/1760839.html style=艰难取舍"/>

问题 G: 艰难取舍

题目描述
由于hyf长得实在是太帅了,英俊潇洒,风流倜傥,人见人爱,花见花开,车见车载。
有一群MM排队看hyf。每个MM都有自己独特的风格,由于hyf有着一颗包容的心,所以,什么风格的MM他都喜欢……
但是,hyf有一个特别的要求,他不希望总是看到风格得差不多的MM,更加特别的是,如果两个MM风格完全一样,hyf不会有任何意见。
现在,hyf希望从去看他的MM中,去掉一些MM,从而使得相邻2个MM的风格值的差(绝对值)不为1。自然地,hyf希望去掉的MM越少越好。
输入
第一行一个整数N;
第2~N+1行N个整数,第i个为ci。表示第i个MM的风格值。
输出
一个数,表示最少要去掉的MM数。
样例输入 Copy
6
4
2
2
1
1
1
样例输出 Copy
2
提示
对于30%的数据,N≤20
对于70%的数据,N≤100,ci≤2000
对于100%的数据,N≤1000,0≤ci≤2000
解析:

设f[i]:表示当前i选与不选的最多留下的MM

最终答案就是:n-f[n]

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+1000;
int f[N],n;
int a[N];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++){if(abs(a[j]-a[i])!=1) f[i]=max(f[i],f[j]+1);}}cout<<n-f[n]<<endl;
}

更多推荐

问题 G: 艰难取舍

本文发布于:2024-03-07 09:39:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1717473.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:艰难

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!