CodeForces 1110H. Modest Substrings】的更多相关文章

题目简述:给定$1 \leq l \leq r \leq 10^{800}$,求一个长度为$n \leq 2000$的数字串$s$,其含有最多的[好]子串.一个串$s$是[好]的,如果将其看做数字时无前导零且满足$l \leq s \leq r$.形式化的说,就是求 $$ \arg \max_{s \in \Sigma^n} \sum_{i=1}^n \sum_{j=i}^n [s[i] \neq 0 \land l \leq s[i \dots j] \leq r] , $$ 其中$\Sigm…
原题链接:http://codeforces.com/problemset/problem/271/D 题目原文: D. Good Substrings time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output You've got string s, consisting of small English letters. Some…
原文链接http://www.cnblogs.com/zhouzhendong/p/9010851.html 题目传送门 - Codeforces 316G3 题意 给定一个母串$s$,问母串$s$有多少本质不同的子串$t$是“好”的. 一个字符串$t$是好的,仅当$t$满足了所有的$n$个条件. 第$i$个条件用一个三元组$(p_i,L_i,R_i)$来描述. 其中$p_i$为一个字符串,$L_i,R_i$为整数,且$L_i\leq R_i$. 仅当字符串$t$在$p_i$中出现次数在$L_i…
description CodeForces 定义一个正整数\(x\)是合适的当且仅当\(l\le x\le r\),其中\(l,r\le 10^{800}\). 找到一个长度为\(n\)的数字串,使其包含合适的数作为子串的次数最多,\(n\le 2000\). 如果有多解,输出字典序最小的那个. solution 如果模式串的个数不多,那么直接套用AC自动机上数位dp的方法即可. 关于这一方法可参见[SDOI2014]数数. 现在这个做法的缺陷是要放入的串太多. 考虑简化. 根据数位dp的思想…
[题目链接]click here~~  [题目大意]:  You are given string s. Your task is to determine if the given string s contains two non-overlapping substrings "AB" and "BA" (the substrings can go in any order).  Input  The only line of input contains a…
传送门 D. Good Substrings time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output You've got string s, consisting of small English letters. Some of the English letters are good, the rest are bad. A s…
Codeforces 题面传送门 & 洛谷题面传送门 SAM hot tea %%%%%%% 首先我们显然可以将所有能够得到的字符串分成六类:\(\varnothing,\text{*},s,\text{*}s,s\text{*},s\text{*}t\),其中 \(s,t\) 分别代表某个非空字符串,\(\text{*}\) 则代表题目中的星号,显然前两种情况的贡献都是 \(1\),算出后几种情况的答案后直接加 \(2\) 即可,第三种情况也异常简单,相当于求 \(s\) 中本质不同的子串个数…
传送门 如果\(r-l\)比较小,可以将所有满足条件的串扔进\(AC\)自动机然后在上面DP,从前往后确定字符串的每一位. 但是\(l,r \leq 10^{800}\)就十分不可行,所以需要优化这个算法. 考虑可能会有某一个节点的子节点连向的所有子节点构成一个满十叉树,意即当到达了这个节点之后可以随便往下走子节点,而且不论怎么走得到的结果都相同.比如说对于某一个九位数\(x = \overline {x_1x_2x_3x_4x_5x_6x_7x_8x_9}\),当前的\(l=123456789…
题目链接 \(Description\) \(Solution\) 合法的子序列只有三种情况:递增,递减,前半部分递增然后一直递减(下去了就不会再上去了)(当然还要都满足\(|a_{i+1}-a_i|=1\)). 容易想到区间DP.\(f[i][j]\)表示把区间\([i,j]\)全部删除的最大收益,还需要\(g[i][j]\)表示将区间\([i,j]\)删成连续上升的一段(\(a_i\sim a_j\))的最大收益,\(h[i][j]\)表示将区间\([i,j]\)删成连续下降的一段(\(a_…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个包含 n 个小写字母的字符串 s,用 s 生成 n 个串 t1...n,其中 ti 等于字符串 s 将第 i 个字符替换为 * 得到的字符串. 特别注意:这里的 * 只是一个字符,并不具有其他含义(如通配符). 求有多少字符串,在 {s, t1, t2, ..., tn} 中作为至少一个字符串的子串出现. 戳我查看原题o.o @solution@ 不包含…