CF245H

CF245H

好题笔记

这是一道计数和记忆化搜索的好题,算是我直接用这道题来讲这两个知识点。
记忆化搜索: 我们这题一眼看起来有点mancher的感觉,但是其实这道题并不是mancher,而是道计数dp,我们其实可以一下子就像出来状态dp[x][y] 从x到y的回文子串的个数,那么通过容斥原理我们可以知道dp[x][y]=dp[x+1][y]+dp[x][y-1]-dp[x+1][y-1] +if(x==y) 这个还是很容易想出来的一个转移方程,至于状态的想法其实直接就是计数dp的感觉,转移方程就是在草稿纸上画一画就欧克了。
现在我们扯到记忆化搜索:我们定义一个vis[x][y] 只要之前找到过就直接返回,之后记忆化搜索还需要一点点的边界处理,因为我们之前每一次都有记录所以说我们直接先把所有的都找一遍也不会太慢。
之后就是计数dp,其实它本质上来讲并不算是dp,只是他的转移方程和dp有点像,我们一般做找转移方程直接用容斥原理就OK。
最后代码如下

#include<cstdio>
#include<cstring>
#include<iostream>

using namespace std;
char s[5005];

void get_input() {
	scanf("%s", s+1 );
} 

bool if_pal[5005][5005];
bool visit_pal[5005][5005];

void get_pal(int l,int r){
	if(visit_pal[l][r])
		return; //记忆化搜索的标志
	if(l==r||l==r-1) {
		if_pal[l][r] = (s[l]==s[r]);
		return;
	}	//边界搜索 
	get_pal(l+1,r-1);
	
	if(if_pal[l+1][r-1])
		if_pal[l][r]= (s[l] == s[r]);
	
	visit_pal[l][r]=true;//记忆化搜索的另一个标记 
}

int dp[5005][5005];
bool vis_dp[5005][5005];
void get_dp(int l,int r){
	if(vis_dp[l][r]) 
	 return;
	if(l==r){
		dp[l][r]=1;
		return ;
	}
	if(l==r-1){
		if(s[l]==s[r]){
			dp[l][r]=3;
		}
		else dp[l][r]=2;
		return;
	}
	
	get_dp(l+1,r);
	get_dp(l,r-1);
	get_dp(l+1,r-1);
	
	dp[l][r]=dp[l+1][r]+dp[l][r-1]-dp[l+1][r-1]+if_pal[l][r];
	vis_dp[l][r]=true;
}

void init(){
	int len=strlen(s+1);
	for(int i=1;i<=len;i++){
		for(int j=i;j<=len;j++){
			get_pal(i,j);
		}
	}
	for(int i=1;i<=len;i++){
		for(int j=i;j<=len;j++){
			get_dp(i,j);
		}
	}
}

void get_ans(){
	int q,r,l;
	scanf("%d",&q);
	while(q--){
		scanf("%d%d",&l,&r);
		printf("%d\n",dp[l][r]);
	}
}

int main(){
	get_input();
	init();
	get_ans();
	return 0;
}

最后我最近改了写代码的习惯,把主函数里的东西写少可以有效的方便减少bug的数量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
H3C CF8800是一款高性能的企业级交换机设备,用户手册是为了帮助用户正确配置和使用这款设备而编写的详细指南。 H3C CF8800用户手册主要包括以下内容: 1. 产品介绍:介绍了CF8800交换机的主要特点和硬件结构,包括端口配置、指示灯功能等。用户可以通过阅读这部分内容了解设备的基本情况。 2. 硬件安装:详细介绍了CF8800的安装步骤,包括机柜安装、电源连接、网线连接、风扇插入等。用户可以按照手册中给出的指引一步步完成设备的安装。 3. 系统配置:介绍了CF8800的系统配置方法,包括设备开机、登录认证、管理口配置等。用户可以根据手册中的说明设置设备的基本参数。 4. VLAN配置:详细介绍了CF8800的VLAN配置方法,包括新建VLAN、端口划分、端口模式设置等。用户可以根据手册中的指引配置设备的VLAN。 5. 路由配置:介绍了CF8800的路由配置方法,包括静态路由、动态路由、路由汇总等。用户可以按照手册中给出的步骤配置设备的路由。 6. 安全配置:详细介绍了CF8800的安全配置方法,包括访问控制列表(ACL)、端口安全、防护组等。用户可以根据手册中的说明加强设备的安全性。 总之,H3C CF8800用户手册是一本重要的工具,可以帮助用户快速熟悉设备的各项功能和配置方法。用户在使用CF8800交换机时,可以随时参考手册来解决设备配置和使用过程中的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值