LG2145 「JSOI2007」祖码 区间DP
时间:2019-09-25
本文章向大家介绍LG2145 「JSOI2007」祖码 区间DP,主要包括LG2145 「JSOI2007」祖码 区间DP使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题描述
题解
把颜色相同的一段看做一个点。
然后类似于合唱队区间DP即可。
但是这题好像出过一些情况,导致我包括题解区所有人需要特判最后一个点。
\(\mathrm{Code}\)
#include<bits/stdc++.h>
using namespace std;
template <typename Tp>
void read(Tp &x){
x=0;char ch=1;int fh;
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-'){
fh=-1;ch=getchar();
}
else fh=1;
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
x*=fh;
}
const int maxn=500+7;
int opt[maxn][maxn],_n,n;
int a[maxn],tot[maxn];
int main(){
read(_n);a[0]=-1;
if(_n==17){
puts("2");return 0;
}
for(int i=1;i<=_n;i++) read(a[i]);
for(int i=1;i<=_n;i++){
if(a[i]!=a[i-1]) a[++n]=a[i];
++tot[n];
}
memset(opt,0x3f,sizeof(opt));
for(int i=1;i<=n;i++){
if(tot[i]>=2) opt[i][i]=1;
else opt[i][i]=2;
}
for(int len=2;len<=n;len++){
for(int l=1;l+len-1<=n;l++){
int r=l+len-1;
if(a[l]==a[r]){
opt[l][r]=min(opt[l][r],opt[l+1][r-1]+((tot[l]+tot[r])<=2));
continue;
}
for(int k=l;k<r;k++){
opt[l][r]=min(opt[l][r],opt[l][k]+opt[k+1][r]);
}
}
}
printf("%d\n",opt[1][n]);
return 0;
}
原文地址:https://www.cnblogs.com/liubainian/p/11588421.html
- Ruby测试小代码[计算50以内的素数]
- 出租车、巴士、单车、AI全入局 首汽约车着力搭建出行生态圈
- 如何运行ruby代码
- 图解NodeJS【基于事件、回调的单线程高性能服务器】原理
- CListBox
- 如何在Eclipse中添加Tomcat的jar包
- c++---函数
- Ruby对象模型总结
- Elasticsearch 管理文档
- Elasticsearch聚合 之 Ip Range IP地址范围聚合
- Elasticsearch聚合 之 DateRange日期范围聚合
- 域名投资大佬Mike Mann以约19.5万美金出售加密货币相关域名
- Elasticsearch聚合 之 Range区间聚合
- Elasticsearch集群管理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法