qls的魔法(区间dp)
公元 8102\texttt{8102}8102年,qls成为了闻风丧胆的黑魔法师。
众所周知,qls拥有让一串连续的数字变成同一个数的邪恶魔法。例如,qls有一串数字 133456\texttt{133456}133456,她可以选择 133456\texttt{133456}133456 中的 345\texttt{345}345 变成 6\texttt{6}6,那么这串数字就会变成 136666\texttt{136666}136666
来自西方的国王yuki对qls的邪恶魔法十分感兴趣,qls想知道,如果他起初有一个长为 nnn 的全零数字,那么他最少要使用多少次魔法才能使这个数字变成xxx。
#include<bits/stdc++.h>
#define mes(a, b) memset(a, b, sizeof a)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 300+10;
const ll inf = 1e18;
int T;
int n;
char a[maxn];
int dp[maxn][maxn];
int main(){scanf("%d%s", &n, a+1);for(int i = 0; i <= n; i++){for(int j = 0; j <= n; j++){dp[i][j] = n+1;}dp[i][i] = 1;}for(int d = 2; d <= n; d++){for(int l = 1, r = l+d-1; r <= n; l++, r++){for(int k = l; k <= r; k++){if(a[l] == a[k]) dp[l][r] = min(dp[l][r], dp[l+1][k]+dp[k+1][r]);else dp[l][r] = min(dp[l][r], dp[l+1][k]+dp[k+1][r]+1);if(a[r] == a[k]) dp[l][r] = min(dp[l][r], dp[l][k-1]+dp[k][r]);else dp[l][r] = min(dp[l][r], dp[l][k-1]+dp[k][r]+1);}if(a[l] == a[r]) dp[l][r] = min(min(dp[l][r-1], dp[l+1][r]), dp[l][r]);}}printf("%d\n", dp[1][n]);return 0;
}
qls的魔法(区间dp)相关推荐
- cdoj 1131 男神的礼物 区间dp
男神的礼物 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1131 Descr ...
- POJ 2955 Brackets (区间DP)
题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- 0x53. 动态规划 - 区间DP(习题详解 × 8)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 0x53. 动态规划 - 区间DP Problem A. 最优矩阵链乘 Problem B. ...
- UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)
整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...
- UVA10003 切木棍 Cutting Sticks(区间DP、细节)
整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...
- 【动态规划】区间DP - 最优矩阵链乘(另附POJ1651Multiplication Puzzle)
最优矩阵链乘(动态规划) 一个n∗mn*mn∗m的矩阵由 nnn 行 mmm 列共 n∗mn*mn∗m 排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个nm的矩阵乘mp的矩阵,运算量 ...
- 【每日DP】day13、P3147 [USACO16OPEN]262144 (区间DP,2048游戏)难度⭐⭐⭐★
P3147 [USACO16OPEN]262144 P 想到合并,自然就想到区间dp,一个被合成的数之前是一个区间,并且由两个数比它小 111 的区间合成.可麻烦的是,我们并不知道之前的两个区间长度各 ...
- poj1651(区间dp)
题目连接:http://poj.org/problem?id=1651 题意:给出一组N个数,每次从中抽出一个数(第一和最后一个不能抽),该次的得分即为抽出的数与相邻两个数的乘积.直到只剩下首尾两个数 ...
- HDU 5115 Dire Wolf ——(区间DP)
比赛的时候以为很难,其实就是一个区间DP= =..思路见:点我. 区间DP一定要记住先枚举区间长度啊= =~!因为区间dp都是由短的区间更新长的区间的,所以先把短的区间更新完.. 代码如下: 1 #i ...
- 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]
传送门 题目2 : 回文字符序列 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串ab ...
最新文章
- 使用函数对4*4的二维数组转置
- Linux┊理解devfs、sysfs、udev、tmpfs
- PHP几个快速读取大文件例子
- connection refused_ERR_CONNECTION_REFUSED
- Java核心类库篇2——lang
- python中常见的漏洞_Python 中的 10 个常见安全漏洞,以及如何避免(上)
- docker 安全性_未来的Docker安全性
- laravel插入数据时报 502 Bad Gateway
- maven夹包引入的速度问题
- UIApplication深入学习 调用程序开自身软件 发短信 打电话等
- 行星级计算机,称霸两千余年的最快“计算机”——我国的算盘,两弹一星都靠它...
- java redis 队列 抢购_redis使用watch秒杀抢购实现思路
- 张量的基本概念及应用
- 《程序员情商》沟通能力练习基本功——趣味绕口令
- 2020-11-04 浏览器主页被毒霸劫持的解决方案
- 解决 DevExpress21 控件不在工具箱显示问题
- c语言中常量单双引号,C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同。...
- Filecoin(FIL) 通过PHP生成 f1 开头的地址
- icloud连接服务器时出现问题_iphone8 icloud连接服务器时出现问题
- SMP、NUMA、MPP模型介绍