本文主要是介绍艰难取舍(Contest - ty2021cspJ专题练习之动规1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
由于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
代码:
#include<iostream>
#include<iomanip>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stack>
#include<cstdio>
#include<queue>
#include<list>
#include<vector>
#include<map>
using namespace std;
long long n,CC[1005],FF[1005],i;
int main(){
cin>>n;
for(i=1;i<=n;i++){
cin>>CC[i];
FF[i]=1;
}
for(i=2;i<=n;i++){
for(int j=1;j<i;j++){
if(abs(CC[i]-CC[j])!=1){
FF[i]=max(FF[i],FF[j]+1);
}
}
}
cout<<n-FF[n];
return 0;
}
// ---lzp
这篇关于艰难取舍(Contest - ty2021cspJ专题练习之动规1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!