令$f_{S}$表示字符串$S$的答案(所有子集的方案数之和),考虑转移:

1.最后是一个字符串,不妨仅考虑最后一个字符,即$f_{S[1,|S|)}$(字符串下标从1开始),特别的,若$S_{|S|}=1$,还有一个2倍的系数

2.是一个乘法,考虑是$k\times T$,记$l=|T|$,则$T$需要是末尾$k$段长为$l$的串的公共子集,不难发现这个公共子集就是这$k$个串求and后的串$T'$的子集,那么贡献即为$f_{T'}\cdot f_{S[1,|S|-kl]}$

对其记忆化搜索即可,以下来证明状态数:

考虑$f_{S[1,|S|-kl]}$这个状态,一定会通过第一种若干次后得到,因此不需要考虑

接下来,构造一棵搜索树,但这棵搜索树的每一个儿子是父亲的一个长为$kl$的子串($k\ge 2$)的$k$段字符串求and后的结果,$S$为第一层

对于四层即以后的字符串,长度一定不超过$\lfloor\frac{n}{8}\rfloor$,即至多$o(2^{\lfloor\frac{n}{8}\rfloor})$个

对于前三层的字符串,显然只需要统计第三层就足够了

当其中某一层的$k\ge 3$时,那么这一个串长度不超过$\lfloor\frac{n}{6}\rfloor$,类似的总量为$o(2^{\lfloor\frac{n}{6}\rfloor})$,也可以接受

接下来,每一层的$k$都为2,之后假设其父亲长度为$l_{1}$,自己的长度为$l_{2}$,其对应于$S$中,即$S$中的4个长为$l_{2}$的串的and,且第1和2个串相连、第3和4个串相连

因此这个字符串仅取决于第一个起点、第二个起点以及串长,总量为$o(n^{3})$

总复杂度约为$o(2^{\lfloor\frac{n}{6}\rfloor}+n^{3})$,实际上分析仍有很大的改善空间,即跑不满

具体记忆化的实现哈希+map即可

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 105
4 #define mod 998244353
5 map<int,int>f[N];
6 char s[N];
7 int get_hash(int l,char *s){
8 int ans=0;
9 for(int i=0;i<l;i++)ans=(3LL*ans+s[i]-'0')%mod;
10 return ans;
11 }
12 int dfs(int l,char *s){
13 if (!l)return 1;
14 int h=get_hash(l,s);
15 if (f[l][h])return f[l][h];
16 int ans=(1+s[l-1]-'0')*dfs(l-1,s)%mod;
17 char t[N];
18 for(int i=1;i<=l/2;i++){
19 for(int k=0;k<i;k++)t[k]=s[l-i+k];
20 for(int j=2;i*j<=l;j++){
21 for(int k=0;k<i;k++)t[k]=min(t[k],s[l-i*j+k]);
22 ans=(ans+1LL*dfs(l-i*j,s)*dfs(i,t))%mod;
23 }
24 }
25 return f[l][h]=ans;
26 }
27 int main(){
28 scanf("%s",s);
29 printf("%d",dfs(strlen(s),s));
30 }

[atAGC020E]Encoding Subsets的更多相关文章

  1. AtCoder Grand Contest 020 (AGC020) E - Encoding Subsets 动态规划

    原文链接www.cnblogs.com/zhouzhendong/p/AGC020E.html 前言 真 \(\cdot\) 信仰型动态规划 题解 我们可以采用信仰型动态规划解决此题. 设 \(dp[ ...

  2. Atcoder Grand Contest 020 E - Encoding Subsets(记忆化搜索+复杂度分析)

    Atcoder 题面传送门 & 洛谷题面传送门 首先先考虑如果没有什么子集的限制怎样计算方案数.明显就是一个区间 \(dp\),这个恰好一年前就做过类似的题目了.我们设 \(f_{l,r}\) ...

  3. 【AtCoder】AGC020

    A - Move and Win 题解 看两个人相遇的时候谁先手即可,相遇之后第一个移动的人必输 代码 #include <bits/stdc++.h> #define fi first ...

  4. DP 做题记录 II.

    里面会有一些数据结构优化 DP 的题目(如 XI.),以及普通 DP. *I. P3643 [APIO2016]划艇 题意简述:给出序列 \(a_i,b_i\),求出有多少序列 \(c_i\) 满足 ...

  5. WC2021 题目清单

    Day2 上午 <IOI题型与趣题分析> 来源 题目 完成情况 备注 IOI2002 Day1T1 Frog 已完成 IOI2002 Day1T2 Utopia IOI2002 Day1T ...

  6. 多校联训 DP 专题

    [UR #20]跳蚤电话 将加边变为加点,方案数为 \((n-1)!\) 除以一个数,\(dp\) 每种方案要除的数之和即可. 点击查看代码 #include<bits/stdc++.h> ...

  7. 【转】数据预处理之独热编码(One-Hot Encoding)

    原文链接:http://blog.csdn.net/dulingtingzi/article/details/51374487 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. ...

  8. 数据预处理:独热编码(One-Hot Encoding)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  9. Direct Access to Video Encoding and Decoding

    来源:http://asciiwwdc.com/2014/sessions/513   Direct Access to Video Encoding and Decoding  Session 5 ...

随机推荐

  1. B站1024程序员节部分答案

    1.页面的背后是什么? 直接撸页面源码就行啦 2.真正的秘密只有特殊的设备才能看到 修改UA为页面上提示的"bilibili Security Browser" 3.密码是啥? 弱 ...

  2. nginx负载均衡部署

    1 系统版本 CentOS Linux release 6.0.1708 (Core) 2 编译安装前所需要的准备: 1.GCC编译器 首先检查GCC是否安装,命令:gcc -v ,如果显示有相关版本 ...

  3. ASP.NET Core Filter与IOC的羁绊

    前言 我们在使用ASP.NET Core进行服务端应用开发的时候,或多或少都会涉及到使用Filter的场景.Filter简单来说是Action的拦截器,它可以在Action执行之前或者之后对请求信息进 ...

  4. pycharm中设置自己的文件模板

    File>>Settings>>Editor>>File and Code Templates 选择文件类型Python Scripts,输入文件模板类型 #!/u ...

  5. 3.2 Dependencies of the Projects in the Solution 解决方案中项目间的依赖项

    3.2 Dependencies of the Projects in the Solution 解决方案中项目间的依赖项 The diagram below shows the essential ...

  6. pip 安装软件报 Requirement already satisfied

    pip 安装的时候报错了,以为是豆瓣源有问题,换了还是一样,于是我们只需要加入一个参数 --target=路径    给它一个指定的位置就可以解决这个问题 安装位置不变,只是增加了一个参数在后面

  7. 【c++ Prime 学习笔记】第16章 模板与泛型编程

    面向对象编程(OOP)和泛型编程(GP)都能处理在编写程序时类型未知的情况 OOP能处理运行时获取类型的情况 GP能处理编译期可获取类型的情况 标准库的容器.迭代器.算法都是泛型编程 编写泛型程序时独 ...

  8. Java:异常小记

    Java:异常小记 对 Java 中的 异常 ,做一个微不足道的小小小小记 Error 和 Exception 相同点: Exception 和Error 都是继承了 Throwable 类,在 Ja ...

  9. 【二食堂】Beta - 事后分析

    事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? Beta阶段我们首先要对文本标注方式进行优化,其次时添加好友系统,实现邀请好友共同标注的功能. ...

  10. 扩展spring data jpa的repository

    在我们编写代码的过程中,spring data jpa为我们的持久层提供的极大的方便,但有时spring data jpa提供的repository并不能完全满足我们开发的需求,因此就需要进行扩展.s ...