先用KMP求出所有可以放的位置,然后两个值分别处理. 最大值: 贪心,4!枚举放的先后位置顺序,2^3枚举相邻两个串是否有交. 若有交,则后一个的起始位置一定是离前一个的结束位置最近的位置,无交也一样. 最小值: 首先去掉被其它串包含的串,因为肯定可以和其它串放同样的位置. 将所有串从长到短排序方便DP. f[S][i]表示当前放的串的情况为S,串目前所覆盖到的最后一个位置为i,覆盖的最小总长度是多少,则有: 当最后一个覆盖到i的串位置与其它串不相交时:f[S][i]=min{f[S'][k]}…
首先kmp求出每个子串能放在哪些位置.接下来的两部分贪心和状压都可以,各取比较方便的. 最大值考虑贪心.考虑枚举子串的左端点出现顺序,在此基础上每个子串的位置肯定都应该尽量靠前,有是否与上个子串有交两种选择,如果有交一定会使交集最小,于是枚举第一个子串出现位置并暴力枚举4!*23种情况. 最小值考虑状压.首先把被包含的子串去掉方便处理.将线段排序,设f[i][S]为当前覆盖到的最右位置为i已出现的子串集合为S时的最小覆盖长度,转移时考虑上条线段是否与其有交,单调队列优化转移(因为懒写了线段树).…
题意 字符串A有N个子串B1,B2,-,Bn.如果将这n个子串分别放在恰好一个它在A中出现的位置上(子串之间可以重叠) 这样A中的若干字符就被这N个子串覆盖了.问A中能被覆盖字符个数的最小值和最大值. 字符串长度\(A<=10000,N<=4\),子串长充\(<=1000\) 分析 参照_Gloid的题解. 首先kmp求出每个子串能放在哪些位置.接下来的两部分贪心和状压都可以,各取比较方便的. 最大值 考虑贪心.考虑枚举子串的左端点出现顺序,在此基础上每个子串的位置肯定都应该尽量靠前,有…
[BZOJ4560][JLoi2016]字符串覆盖 Description 字符串A有N个子串B1,B2,…,Bn.如果将这n个子串分别放在恰好一个它在A中出现的位置上(子串之间可以重叠)这样A中的若干字符就被这N个子串覆盖了.问A中能被覆盖字符个数的最小值和最大值. Input 第一行包含一个正整数T,表示数据组数.保证T≤10.接下来依次描述T组数据,每组数据中:第一行包含一个由小写字母组成的字符串,表示母串A.第二行包含一个整数N,表示子串的个数.接下来N行,每行包含一个由小写字母组成的字…
题目大意 \(T\)(\(T\leq10\))组询问 每组询问给出一个字符串\(A\)(\(|A|\leq10^4\)),\(n\)(\(n\leq4\))个\(A\)的子串\(B_1,B_2,B_3,...,B_n\)(\(\forall i \in[1,n],|B_i|\leq10^3\)) 如果\(|B_i|=r-l+1\)且\(B_i\)的每一个字符依次与\(A_l,A_{l+1},...,A_{r}\)相等,那么区间\([l,r]\)每个位置都被覆盖了一次 求如果必须把\(B_1,..…
题解 先用kmp求出来一个ed[i][j]表示在母串的第i位是第j个子串的结尾 考虑状压一个二进制位表示这个子串覆盖过没有 对于最大值,记一个dp[S][i]表示子串的使用状况为S,当前为母串的第i位,最大覆盖的个数 每次枚举S一个没有的子串j,把目标状态记成S^(1 << j - 1) = T dp[T][i]可以从dp[T][i - 1]取个max过来,如果i还是当前枚举的子串j能匹配上,那么可以从dp[S][i - len[j]] + len[j]转移 然后就是考虑覆盖的情况,有些时候覆…
题目传送门 /* 题意:任意排列第一个字符串,使得有最多的不覆盖a/b字符串出现 字符串处理/贪心:暴力找到最大能不覆盖的a字符串,然后在b字符串中动态得出最优解 恶心死我了,我最初想输出最多的a,再最多的b,然而并不能保证是最多的:( */ #include <cstdio> #include <cstring> #include <string> #include <iostream> #include <algorithm> #includ…
3174: [Tjoi2013]拯救小矮人 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 686  Solved: 357[Submit][Status][Discuss] Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚到肩膀的高度Ai,并且他的胳膊长度为Bi.陷阱深度为H.如果我…
BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚到肩膀的高度Ai,并且他的胳膊长度为Bi.陷阱深度为H.如果我 们利用矮人1,矮人2,矮人3,...矮人k搭一个梯子,满足A1+A2+A3+....+Ak+Bk>=H,那么矮人k就可以离开陷阱逃跑了,一 旦一个矮人逃跑了,…
正解:贪心+dp 解题报告: 传送门! 我以前好像碰到过这题的说,,,有可能是做过类似的题qwq? 首先考虑这种显然是dp?就f[i][j]:决策到了地i个人,跑了j个的最大高度,不断更新j的上限就得到答案了(显然i可以省略但为了表述更清晰一点就懒得省辣? 然后这时候就考虑一个问题,就是,dp的要求是无后效性嘛,但这里有个问题,假如有三个人,高度分别为(1,1)(1,1)(100,100),然后洞的深度是100,如果直接按这个顺序dp,那就只有最后一个人能跑出去了,但实际上只要我们合理安排一下顺…