令$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. caffe.cpp解析

    来自链接:http://blog.csdn.net/u014114990/article/details/47747025 主要讲解:GetBrewFunction()函数定义如下,其返回BrewFu ...

  2. python自定义翻页配置

    1.创建pager.py文件,针对翻页进行函数书写 class PageInfo(object): # current_page 当前页数 # all_count 所有行 # per_page 每页的 ...

  3. 手机淘宝轻店业务 Serverless 研发模式升级实践

    一.前言 随着 Serverless 在业界各云平台落地,阿里内部 Serverless 研发平台.各种研发模式也在业务中逐步落地,如火如荼.在此契机下,淘系团队启动了轻店 Serverless 研发 ...

  4. Apache Beam入门及Java SDK开发初体验

    1 什么是Apache Beam Apache Beam是一个开源的统一的大数据编程模型,它本身并不提供执行引擎,而是支持各种平台如GCP Dataflow.Spark.Flink等.通过Apache ...

  5. 【java】【作业】定义课程信息;继承和组合练习

    问题: 定义课程信息类,包含课程编号.课程名称及学生成绩.编程实现对软件工程专业的某班级的所有课程成绩统计,包括平均成绩.最高成绩.最低成绩,并打印成绩等级分布律. 分析 初分析: 父类(课程信息类) ...

  6. kiyv Button参数属性

    from kivy.uix.button import Button from kivy.uix.floatlayout import FloatLayout from kivy.app import ...

  7. ScatterLayout:分散布局在py中的引用

    """ ScatterLayout:分散布局 """ from kivy.app import App from kivy.uix.scat ...

  8. [对对子队]会议记录4.21(Scrum Meeting12)

    今天已完成的工作 吴昭邦 ​ 工作内容:基本实现改变顺序合成 ​ 相关issue:实现流水线合成系统的逻辑 ​ 相关签入:4.21签入1 梁河览 ​ 工作内容:修改设置界面bug ​ 相关签入:4.2 ...

  9. springboot整合rabbitmq实现生产者消息确认、死信交换器、未路由到队列的消息

    在上篇文章  springboot 整合 rabbitmq 中,我们实现了springboot 和rabbitmq的简单整合,这篇文章主要是对上篇文章功能的增强,主要完成如下功能. 需求: 生产者在启 ...

  10. Noip模拟71 2021.10.7

    T1 签到题 结论题,找到规律就会做 规律是每个点的度数$\mod$颜色种数,如果不是$0$则贡献一个答案 1 #include<bits/stdc++.h> 2 #define int ...