首页 > 其他分享 >CF1732F Clear the String

CF1732F Clear the String

时间:2024-01-25 21:13:57浏览次数:27  
标签:String int Clear 550 CF1732F aligned dp

题目传送门

很明显的一道区间dp

我们设\(dp_{i,j}\)表示清空\(i\)到\(j\)之间所有字母所需的最小操作次数

紧接着任取一个\(k\)满足\(k\in (i,j]\)

来分情况讨论:

\[ f_{i,j}= \min^j_{k=i+1} \left\{ \begin{aligned} a_i=a_k \Rightarrow f_{i+1,k-1}+f_{k,j} \\ f_{i+1,k-1}+f_{k+1,j}+1 \end{aligned} \right. \]

初始化只需要使\(dp_{i,i}=1\),其他位置都是一个极大值即可

需要注意一下,因为我们的循环是从\(i+1\)开始的,但是\(k=i+1\)时,数组访问的\(f_{i+1,k-1}\)是一个没有实际意义的(因为这个时候\(i+1>k-1\),与事先定义的\(f_{i,j}\)不符),所以这里应该是\(0\),赋初始值的时候需要注意一下

接着即可写出代码:

#include<bits/stdc++.h>
using namespace std;
string s;
int n;
int dp[550][550];
int main()
{
	cin>>n>>s;
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			dp[i][j]=1e9+10;
		}
		dp[i][i]=1;
	}
	for(int l=2;l<=n;l++)
	{
		for(int i=1;i+l-1<=n;i++)
		{
			int j=i+l-1;
			for(int k=i+1;k<=j;k++)
			{
				dp[i][j]=min(dp[i][j],dp[i+1][k-1]+dp[k][j]+(s[i-1]!=s[k-1]));
			}
		}
	}
	cout<<dp[1][n];
	return 0;
}

标签:String,int,Clear,550,CF1732F,aligned,dp
From: https://www.cnblogs.com/lyk2010/p/17988162

相关文章

  • Err: http://packages.ros.org/ros2/ubuntu jammy InRelease Clearsigned file isn't
    问题描述Ubuntu22.04已安装ros2终端报错内容:jackie@MS-7E06:~/z_ws_ros2$sudoaptupdate[sudo]passwordforjackie:Get:1file:/var/cuda-repo-ubuntu2204-12-1-localInRelease[1,572B]Get:1file:/var/cuda-repo-ubuntu2204-12-1-localInRelease[1,572B]......
  • Java String
    String概览String被声明为final,因此它不可被继承。内部使用char数组存储数据,该数组被声明为final,这意味着value数组初始化之后就不能再引用其它数组。并且String内部没有改变value数组的方法,因此可以保证String不可变。publicfinalclassStringimplemen......
  • String 类和常量池
    1、String对象的两种创建方式Stringstr1="abcd";Stringstr2=newString("abcd");System.out.println(str1==str2);//false这两种不同的创建方法是有差别的:第一种方式是在常量池中获取对象("abcd"属于字符串字面量,因此编译时期会在常量池中创建一个字符串对象);第......
  • string 函数
    在C++中,string类型是处理字符串的一种方便的方式,它包含了许多有用的成员函数来进行字符串操作。以下是一些常用的string函数的示例说明:构造函数和赋值:创建空字符串:stringstr;使用字符串常量初始化:stringstr="Hello";使用字符数组初始化:charcharArray[]="World";......
  • Go语言核心36讲 37 | strings包与字符串操作
    在上一篇文章中,我介绍了Go语言与Unicode编码规范、UTF-8编码格式的渊源及运用。Go语言不但拥有可以独立代表Unicode字符的类型rune,而且还有可以对字符串值进行Unicode字符拆分的for语句。除此之外,标准库中的unicode包及其子包还提供了很多的函数和数据类型,可以帮助我们解析各......
  • toString、求平均数工具类
     1/**2*构造器私有化3*/4privateArraysUtils(){}56//toString()工具类静态方法、工具方法7publicstaticStringtoString(int[]arr){8Stringresult="[";9for(inti=0;i<arr.length;i++)......
  • QOJ 2486 Build the String
    考虑当字符串全为\(\texttt{b}\)时,可以通过\(\text{copy}\)\(n-1\)次再\(\text{fuse}\)\(n\)次。这启发从连续段来做,先按顺序构造出一个个连续段,最后\(\text{fuse}\)合为这个串。若第一个连续段为\(\texttt{a}\),则可以通过\(\text{swap}\)事先交换\(\texttt{ab}......
  • StringGrid1单元格内绘图
     varRect:Trect;beginRect:=bg.CellRect(4,3);bg.Canvas.Brush.Color:=clwhite;bg.Canvas.FillRect(rect);bg.Canvas.Draw(rect.Left+trunc((rect.Right-rect.Left-tx2.Width)/2)//单元格水平居中,rect.Top+tr......
  • 21String类的实现
    String类的实现//#include<string>#include<iostream>usingnamespacestd;classString{private: char*_pstr; friendStringoperator+(constString&s1,constString&s2); friendostream&operator<<(ostream&out,constS......
  • 22String字符串和vector对象的迭代器iterator实现
    String字符串对象的迭代器iterator实现泛型算法参数接收的都是迭代器泛型算法是一组全局的函数,适用于所有容器基于第二点,泛型算法有一套方法可以统一地遍历所有容器的元素classString{public: //嵌套定义iterator类 classiterator { private: char*_p;//没有用......