首页 > 其他分享 >题解:UVA1362 Exploring Pyramids

题解:UVA1362 Exploring Pyramids

时间:2024-11-11 17:57:03浏览次数:1  
标签:Exploring 子树 UVA1362 int 题解 305 Pyramids

思路:

显然的,若不是叶子结点都应该至少遍历两次。

于是两个相同访问之间就可能是一颗子树。

更加具体的,如同 \(s_l,\dots,s_k ,\dots,s_r\),使得 \(s_l=s_k\),那么就可以认为 \(s[l,k]\) 是 \(s[l,r]\) 的一颗子树,设区间 \(s[l,r]\) 的结构数量为 \(f_{l,r}\),那么根据乘法原理,当把 \(s[l,k]\) 看作 \(s[l,r]\) 的第一棵子树时,其方案数为 \(f_{l+1,k-1} \times f_{k,r}\)。

为什么是 \(k+1\) 和 \(l-1\),是因为那是因为两个子树不能一样,不能重复。

之后区间 DP 即可。

AC Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,f[305][305];
const int mod=1e9;
char s[305];
signed main() {
	ios::sync_with_stdio(false);
	while(cin>>s+1){
		memset(f,0,sizeof(f));
		n=strlen(s+1);
		for(int i=1; i<=n; i++)f[i][i]=1;
		for(int i=2; i<=n; i++)
			for(int l=1; l<=n+1-i; l++) {
				int r=l+i-1;
				for(int k=l; k<=r; k++) 
					if(s[l]==s[k]) {
						f[l][r]+=f[l+1][k-1]*f[k][r];
						f[l][r]%=mod;
					}
			}
		cout<<f[1][n]<<"\n";
	}
	return 0;
}

之后更改:

由校友 gaomingyang101011 发现 \(f_{l,k}\) 误写为 \(f_{1,k}\)。

标签:Exploring,子树,UVA1362,int,题解,305,Pyramids
From: https://www.cnblogs.com/aub-unluck-beginning/p/18540272

相关文章

  • 241111 noip 题解
    省流:\(100+50+10+30\)。还是不稳定啊,noip上不了270就真的要退役了。T1题意:给定一个长度为\(n\)的序列\(a\),每次你可以交换相邻两个位置,求出最小交换次数以及字典序最小的交换方案使得\(a\)的每个不是本身的前缀都不是排列。\(n\leq10^5\)。注意到每次交换至多会减少一......
  • [题解]P11233 [CSP-S 2024] 染色
    P11233[CSP-S2024]染色设\(f[i][j=0/1]\)表示涂到第\(i\)位,且第\(i\)为颜色为\(j\),则考虑用\(i\)之前能和\(i\)匹配的位置\(p\)进行转移。\(p\)需要满足下面的条件:\(a[p]=a[i]\)。\(p\)的颜色为\(j\)。\([p+1,i-1]\)之间的颜色全不为\(j\)。显然,我们只需要找满足条件的......
  • AT_agc012_f [AGC012F] Prefix Median 题解
    首先将序列排序,这是显然的。考虑倒着确定\(b\)序列中的每个数。即从完整的\(a\)序列开始,每次删掉两个数,记录中位数。先找出\(b\)序列合法的条件。容易发现对于所有\(i\),在\(b_{p_i}\)成为中位数时,\(p_i,p_{i+1}\)之间的所有数都已经被删除了,且\(i\lep_i\le2n-i\)。......
  • Eplan2022卡顿问题解决
    EPLAN2022卡顿崩溃怎么解决 第一步:可以检查下用户设置。打开菜单"选项→设置:用户→翻译→字典":不勾选"自动完成"和"自动更正"。在选项设置框中输入"自动",快速找到用户设置,取消勾选,如下图。 第二步:可以检查下电脑语言设置。设置:常规→兼容性"。如下图。 ......
  • CF 1257 题解
    CF1257题解ATwoRivalStudents每次交换都可以让距离增加\(1\),上界是\(n-1\).题目说至多而不是恰好交换\(x\)次,于是不需要考虑边界.BMagicStick一个重要的观察是:如果能够得到\(x\),那么就能得到任意小于等于\(x\)的数,这是操作二保证的.考虑操作\(1\)......
  • 2024中高级前端面试真题解析
    我是一名本科毕业的前端程序媛,工作5年了,周末双休待遇还不错。公司最近要搬迁新地址,业务要整合到一起,所以最近比较清闲,天天上班摸鱼,闲着没事,整理了以前面试时用的资料文档有945道:JavaScript(323题)CSS(61题)HTML(57题)React(83题)Vue(80题)算法(19题)计算机网络(71题)Node.js(2......
  • 【题解】CF1993【EF】
    A注意到一种选项最多填对\(n\)个题所以答案是\(\min(n,cnt_a)+\min(n,cnt_b)+\min(n,cnt_c)+\min(n,cnt_d)\)B注意到操作只能让奇数变多,偶数变少,所以我们只能把偶数全变成奇数特判掉全是偶数的情况,容易得到答案下界:偶数个数容易想到一个naive贪心做法:每次都拿出奇数......
  • 2024ccpc女生赛题解
    考场上写的A,C,H,L,M下来补一下剩下的E注意\(p[i]<i\)这个性质和重心关系不大,一个简单的构造,手模几个样例就能发现规律。倒着枚举:\(c[i]=0\)的是叶子,不用处理\(c[i]>0\),这个点连到父亲所在连通块的根上即可。并查集维护连通块以及连通块的根,根就是连通块中最小编号的点。#inc......
  • 题解:P11250 [GESP202409 八级] 手套配对
    题目传送门思路讲解一道非常经典的排列组合的题。首先,我们要先从nnn对手套中取走kk......
  • MySQL问题解决记录(1):IP address 'xxx.xxx.xxx.xxx' could not be resolved: 这是在主机
    目录问题描述排查流程解决方案总结问题描述[Warning][MY-010055][Server]IPaddress'xxx.xxx.xxx.xxx'couldnotberesolved:这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。问题表现:A主机的服务在访问B主机的MySQL数据库时,产......