首页 > 其他分享 >P3847的题解

P3847的题解

时间:2023-08-25 21:11:58浏览次数:37  
标签:P3847 int 题解 区间 dp 回文

典型到不能再典型的区间 dp 了。

观察四种操作,考虑到加一个数和删一个数的情况相同,所以无非就是:

  1. 删一个数。

  2. 改一个数。

设 \(dp[l][r]\) 为让区间 \(l\sim r\) 对称(变成回文串)的最少次数。

可以很快地得出状态转移方程:

情况 \(1\):如果 \(a_l=a_r\),则 \(dp[l][r]=dp[l+1][r-1]\)(该区间两端相同,令中间为回文串即可)。

情况 \(2\):如果 \(a_l\not=a_r\),我们则有三种方法变成回文串:

  1. 改变 \(l\) 或 \(r\) 的值,此时 \(dp[l][r]=dp[l+1][r-1]+1\)。

  2. 删除 \(l\),此时 \(dp[l][r]=dp[l+1][r]+1\)。

  3. 删除 \(r\),此时 \(dp[l][r]=dp[l][r-1]+1\)。

情况 \(2\) 取三种方法的最小值即可。

枚举区间长度 \(len\) 与区间左端点 \(l\),时间复杂度为 \(O(n^2)\),可以通过此题。

#include<cstdio>
int min(int a,int b)
{
	return a<b?a:b;
}
int min(int a,int b,int c)
{
	return min(a,min(b,c));
}
int n;
int a[3010];
int dp[3010][3010];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int len=2;len<=n;len++)
		for(int l=1,r=l+len-1;r<=n;l++,r++)
		{
			if(a[l]==a[r]) dp[l][r]=dp[l+1][r-1];
			else dp[l][r]=min(dp[l+1][r-1],dp[l+1][r],dp[l][r-1])+1;
		}
	printf("%d",dp[1][n]);
	return 0;
}

标签:P3847,int,题解,区间,dp,回文
From: https://www.cnblogs.com/osfly/p/17657954.html

相关文章

  • CF1712A的题解
    挺简单的一道题。要想使\(\sum\limits^k_{i=1}p_i\)最小,很明显的,前\(k\)个数必须为\(1\simk\)。设\(c_i\)为\(i\)在\(p\)里出现的位置,则答案为\(\sum\limits^{k}_{i=1}[c_i>k]\)。#include<cstdio>intt;intn,k;inta[110],c[110];intans;intmain(){ sca......
  • 国标视频云服务EasyGBS国标视频平台视频快照无法显示的问题解决步骤
    国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等......
  • [AGC030D] Inversion Sum 题解
    题意给定一个长度为\(n\)的排列\(a\)和\(m\)个形如\(\left(x,y\right)\)的操作,每次操作可以选择是否交换\(a_x,a_y\),求最终所有形成的排列的逆序对总数。(\(1\len,m\le3000\))。题解考虑转化题意,考虑求出最终总的期望逆序对数,即CF258D。转化答案\[\text{Ans}=......
  • Codeforces Round 894 (Div. 3) A-F题解
    A.GiftCarpet题意最近,特马和维卡庆祝了家庭日。他们的朋友Arina送给他们一块地毯,这块地毯可以用拉丁文小写字母的\(n\cdotm\)表来表示。维卡还没看过礼物,但特马知道她喜欢什么样的地毯。如果维卡能在地毯上读出自己的名字,她一定会喜欢的。她从左到右逐列阅读,并从当前列中......
  • arc142,arc143,arc144题解
    ARC142A-EAReverseandMinimize憨的。BUnbalancedSquares构造。考虑一行之内大小交错,行间则单调排列。这样可以使得每个点上下大小关系抵消,左右的又保持一样,于是就合法了。CTreeQueries处在\(1,2\)最短路径上的点一定到两个点距离和最小,于是找到这个距离。但是这个......
  • 网络规划设计师真题解析--IP地址类(一)
    将地址块192.168.0.0/24按照可变长子网掩码的思想进行子网划分,若各部门可用主机地址需求如下表所示,则共有(27)种划分方案,部门3的掩码长度为(28)。(2018年)(27)A.4B.8C.16D.32(28)A.25B.26C.27D.28部门所需地址总数部门1100部门250部门316部门410部门58答案:(27)C(28)C解析:(27)部门所......
  • RTSP流媒体服务器EasyNVR视频平台设备通道时间与服务器录像时间不一致的问题解决步骤
    EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议,将前端接入设备的音视频资源进行采集,并转码成适合全平台、全终端分发的视频流格式,包括RTMP、RTSP、FLV、HLS、WebRTC等格式。平台已经在智慧水利、智慧工厂、智慧校园、智慧仓储等场景中应用。​ 有用户反馈,设......
  • CF258D Little Elephant and Broken Sorting 题解
    题意给定一个长度为\(n\)的排列\(a\)和\(m\)个形如\(\left(x,y\right)\)的操作,每次操作有\(50\%\)的概率交换\(a_x,a_y\),求最终排列的期望逆序对数。(\(1\len,m\le5000\))。题解首先转化答案\[\text{Ans}=\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^{......
  • ADRABR - Adrita and Her Bike Ride 题解
    1.题目大意题目传送门2.思路因为每条道路长均为\(1km\),所以我们可以在建边时就加上走这条路的初始成本,即对于每条边的两端\(a,b\)和通行费\(w\),我们直接\(add(a,b,w+12)\)即可。再就是由于是多组数据,所以我们在每次输入前要清空数组,然后跑一遍最短路模板即可。3.代码#......
  • java.lang.NoClassDefFoundError问题解决方案
    骑士李四记录:场景在pom.xml中引入一个包,之后启动部署项目,出现java.lang.NoClassDefFoundError的问题。报错信息:解决方案:加入这段代码<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executi......