CF1015F】的更多相关文章

玄学字符串dp... 题意:给定一个括号序列,求长度为2n的合法的括号序列的个数(要求每个被统计的合法序列中均至少有一个子串为给定的括号序列) 题解: 这题没有想的那么复杂,就是暴力的一个dp 首先我们设状态f[i][j][k][0/1]表示当前放到了第i个括号,前i个括号中左右括号个数差为j,已经放好的括号中长为k的部分能与s相匹配,0/1表示之前是否存在与s能匹配上的一整个子串 那么我们考虑转移: 首先我们可以枚举第i位放左括号还是右括号,如果放左括号,左右括号差值+1,否则差值-1,这些都…
题意:给定一个只由左右括号组成的字符串s,问长度为2*n的包含它的合法括号序列方案数,答案对1e9+7取模 1≤n≤100,1≤|s|≤200 思路:暴力预处理出s的每个前缀[0..i]后加左右括号分别能与原序列最长匹配到的位置,这一步也可以用KMP 设dp[i][j][k][l]为当前到第i位,未匹配的左括号数为j,当前最长能匹配到s的前k位,是否存在过全匹配s的方案数 有两种转移,第i+1位填左括号或者右括号 答案即为 simga dp[n<<1][0][i][1] (i=0..len(s…
题目大意:给你一个长度为$n$的括号序列$T$,要求你构造一个长度为$2n$的括号序列$S$,保证这个括号序列在插入数字后一定是正确的,并且$T$是$S$的一个子串 还以为是什么纯粹的数学构造题,一通乱搞无果.好吧,并没有想到$KMP$.... 题解:首先用$KMP$预处理出数组$to[i][0/1]$,表示在$i+1$位填上括号$'('$和$')'$后匹配到字符串T的位置 定义$f[i][j][k][0/1]$表示已经添加了$i$个括号,左右括号数量之差是$j$,已经匹配到了字符串$T$的第$…