Codeforces Round #538 (Div. 2)D(区间DP,思维)
2024-09-28 15:58:39
#include<bits/stdc++.h>
using namespace std;
int a[5007];
int dp[5007][5007];
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
n=unique(a+1,a+1+n)-a-1;
for(int i=n;i>=1;i--){
for(int j=i+1;j<=n;j++){
dp[i][j]=min(dp[i+1][j]+1,dp[i][j-1]+1);//右面变为左面的颜色或者左面变为右面的颜色
if(a[i]==a[j])
dp[i][j]=min(dp[i][j],dp[i+1][j-1]+1);//里面变为外面的颜色
}
}
printf("%d",dp[1][n]);
return 0;
最新文章
- 使用AOP+Annotation实现操作日志记录
- adb获取不了设备List of devices attached
- Java经典实例:纪元秒和本地日期时间互换
- Sound Generator 原理
- python 获取文件夹大小
- UITabbar item 设置笔记
- erp与电子商务集成的结构图
- Adding an On/Off switch to your Raspberry Pi
- UIView设置背景渐变色
- 理解git对象
- phpcms 替换首页
- 全景智慧掌上城,飞入寻常百姓家——VR全景智慧城市
- FJUT第三周寒假作业《第九集,离间计》栈
- CAS单点登陆,URL多出个参数jsessionid导致登陆失败问题
- spring源码学习1
- alert.log中的minact-scn: useg scan erroring out with error e:376警告
- android源码下载/查看地址
- 23.读懂 ECMAScript 规格
- js判断数组,对象是否存在某一未知元素
- 查询yum包安装路径