区间dp——好题cf1132F
真的是很好的题
要通过左端点 l 和中间点k进行比较(去找和l同色的k即可) 然后n3来转移
#include<bits/stdc++.h>
using namespace std;
#define maxn 505
char s[maxn];
int dp[maxn][maxn],n;
int main(){
cin>>n>>s+;
memset(dp,0x3f,sizeof dp);
for(int i=;i<=n;i++)dp[i][i]=;
for(int i=;i<=n;i++)
for(int j=;j<i;j++)
dp[i][j]=; for(int len=;len<=n;len++)
for(int l=;l+len-<=n;l++){
int r=l+len-;
if(len==){
if(s[l]==s[r])dp[l][r]=;
else dp[l][r]=;
continue;
}
for(int k=l+;k<=r;k++){
if(s[l]==s[k])
dp[l][r]=min(dp[l][r],dp[l+][k-]+dp[k][r]);
else dp[l][r]=min(dp[l][r],dp[l+][r]+);
}
}
cout<<dp[][n]<<endl;
}
然后是记忆化写法
#include <bits/stdc++.h>
using namespace std;
#define va first
#define vb second
typedef long long ll;
typedef pair<int,int> pii;
using namespace std;
const int MN = ;
const int INF = 1e9; int A[MN],B[MN],D[MN][MN],N,M,K,cnt,tmp,ans,val;
string S; int func(int a, int b){
if(a>b) return ;
if(a==b) return ;
if(D[a][b]!=-) return D[a][b];
int res = func(a+,b)+;
for(int i=a+; i<=b; i++){
if(S[i]==S[a]){
res = min(res,func(a+,i-)+func(i,b));
}
}
return D[a][b] = res;
} int main(){
cin >> N >> S;
for(int i=; i<MN; i++)
for(int j=; j<MN; j++)
D[i][j] = -;
cout << func(,N-);
}
区间dp——好题cf1132F的更多相关文章
- 又一道区间DP的题 -- P3146 [USACO16OPEN]248
https://www.luogu.org/problemnew/show/P3146 一道区间dp的题,以区间长度为阶段; 但由于要处理相邻的问题,就变得有点麻烦; 最开始想了一个我知道有漏洞的方程 ...
- poj 2955 Brackets (区间dp基础题)
We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...
- 状态压缩---区间dp第一题
标签: ACM 题目 Gappu has a very busy weekend ahead of him. Because, next weekend is Halloween, and he is ...
- poj 2955 区间dp入门题
第一道自己做出来的区间dp题,兴奋ing,虽然说这题并不难. 从后向前考虑: 状态转移方程:dp[i][j]=dp[i+1][j](i<=j<len); dp[i][j]=Max(dp[i ...
- 二叉树问题(区间DP好题)
二叉树问题 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Petya Bulochkin很幸运:他得到了一份在"Macrohard"公司的工作.他想要展现他的才华, ...
- codeforces 1140D(区间dp/思维题)
D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- 区间dp板子题:[noi1995]石子合并
非常经典的区间dp模板 对于每一个大于二的区间 我们显然都可以将它拆分成两个子序列 那么分别计算对于每个取最优值即可 #pragma GCC optimize("O2") #inc ...
- zoj3469 区间dp好题
/* 按坐标排序 以餐厅为起点向两边扩展区间 dp[i][j][0]表示送完区间[i,j]的饭后停留在左边的代价 dp[i][j][1]表示送完区间[i,j]的饭后停留在右边的代价 */ #inclu ...
- [nyoj737]石子归并(区间dp入门题)
题意:有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求出总的代价最小值 ...
随机推荐
- linux mysql udf 提权
连接远程数据库 查看插件库路径 show variables like '%plugin%'; 写入udf库到插件目录: 32位: select unhex('7F454C46020101000000 ...
- Day 14: 内置函数:
Python提供了,许多内置的函数我们按 函数的作用来分类: 一.作用域相关的内置函数(2个) (1).globals() 更改全局变量 (2).locals()更改局并命名空间的变量(上一级) 五. ...
- Number浮点数运算详解
文章来自我的 github 博客,包括技术输出和学习笔记,欢迎star. 一道题 0.1 + 0.2 = ? 在浏览器中测试下计算结果,得到的结果是 0.30000000000000004,并不是理想 ...
- vue项目 上传到git
1. git add . 效果: 2. git commit -m '' 3. git push 效果: 4.在码云上就可以看到修改啦 2018-05-19 08:52:52
- JQUERY 效果 遍历 事件
效果 隐藏与显示 hide() 和 show() 淡入淡出 fadeIn(speed,callback).fadeOut(speed,callback). fadeToggle() 方法可以在 f ...
- thinkphp url生成
为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响. 定义规则 ...
- thinkphp 伪静态
URL伪静态通常是为了满足更好的SEO效果,ThinkPHP支持伪静态URL设置,可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行.例 ...
- csps退役记
AFO 省二稳了,指望文化课吧 hzoi加油
- vue.js+web storm安装及第一个vue.js
小白还是自己写一遍吧 1.下载node.js https://nodejs.org/en/download/ 2.安装淘宝镜像(类似于阿里云的maven中央仓库镜像) 安装时间有点长 安装命令:npm ...
- HDU-1698-Just a Hook-区间更新+线段树成段更新
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. T ...