正题


题目大意

给出nnn个字符串SiS_iSi​,然后有些???号可以进行随便填字母。

然后要求Si&lt;Si+1S_i&lt;S_{i+1}Si​<Si+1​的情况下求方案数。


解题思路

定义fl,r,p,cf_{l,r,p,c}fl,r,p,c​表示只考虑l∼rl\sim rl∼r的字符串,只考虑ppp往后的字符,且第ppp个至少为ccc时的方案数。

我们有
fl,r,p,c=fl,r,p,c+1+∑mid=lrfl,mid,p+1,0+fmid+1,r,p,cf_{l,r,p,c}=f_{l,r,p,c+1}+\sum_{mid=l}^r f_{l,mid,p+1,0}+f_{mid+1,r,p,c}fl,r,p,c​=fl,r,p,c+1​+mid=l∑r​fl,mid,p+1,0​+fmid+1,r,p,c​

然后用dfsdfsdfs进行转移即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=55,XJQ=990804011;
int n,L,a[N][N],f[N][N][N][N];
char s[N];
int solve(int l,int r,int p,int c)
{int &dp=f[l][r][p][c];if(~dp) return dp;if(l>r) return dp=1;if(p>L) return dp=(l==r);if(c>26) return dp=0;dp=solve(l,r,p,c+1);for(int i=l;i<=r;i++)if(a[i][p]==c||(a[i][p]==233&&c))dp=(dp+1ll*solve(l,i,p+1,0)*solve(i+1,r,p,c+1)%XJQ)%XJQ;else break; return dp;
}
int main()
{freopen("b.in","r",stdin);freopen("b.out","w",stdout);scanf("%d",&n);memset(f,-1,sizeof(f));for(int i=1;i<=n;i++){scanf("%s",s+1);int z=0;L=max(L,z=strlen(s+1));for(int j=1;j<=z;j++)a[i][j]=(s[j]=='?'?233:s[j]-'a'+1);}printf("%d",solve(1,n,1,0));
}

jzoj6343-[NOIP2019模拟2019.9.7]Medium Counting【记忆化dfs,dp】相关推荐

  1. 【THUWC2019模拟2019.1.18】Counting

    Description 羽月最近发现,她发动能力的过程是这样的: 构建一个 V (V<=100)个点的有向图 G,初始为没有任何边,接下来羽月在脑中构建出一个长度为 E 的边的序列,序列中元素两 ...

  2. 6009. 【THUWC2019模拟2019.1.18】Counting

    题意: 羽月最近发现,她发动能力的过程是这样的: 构建一个 VVV 个点的有向图 GGG,初始为没有任何边,接下来羽月在脑中构建出一个长度为 EEE 的边的序列,序列中元素两两不同,然后羽月将这些边依 ...

  3. jzoj6009. 【THUWC2019模拟2019.1.18】Counting (dp)

    Description 羽月最近发现,她发动能力的过程是这样的: 构建一个 V 个点的有向图 G,初始为没有任何边,接下来羽月在脑中构建出一个长度为 E 的边的序列,序列中元素两两不同,然后羽月将这些 ...

  4. 6377. 【NOIP2019模拟2019.10.05】幽曲[埋骨于弘川]

    题目 题目大意 有个无限长的数列an{a_n}an​,a1=1a_1=1a1​=1,an=an−1+maxdightk(an−1)a_n=a_{n-1}+maxdight_k(a_{n-1})an​= ...

  5. jzoj6344-[NOIP2019模拟2019.9.7]Huge Counting【组合数,状压dp】

    正题 题目大意 定义函数f(x)(xf(x)(xf(x)(x为一个序列))) 若任意一个xi=1x_i=1xi​=1那么有f(x)=1f(x)=1f(x)=1 若有一个xi=0x_i=0xi​=0那么 ...

  6. jzoj6342-[NOIP2019模拟2019.9.7]Tiny Counting【树状数组,容斥】

    正题 题目大意 一个序列SSS,求有多少个互不相同的4元组(a,b,c,d)(a,b,c,d)(a,b,c,d)使得a<b且Sa<Sba<b且S_a<S_ba<b且Sa​ ...

  7. 6360. 【NOIP2019模拟2019.9.18】最大菱形和(rhombus)

    Description Input Output Sample Input 5 5 2 0 1 5 7 3 -4 2 0 -9 8 3 9 0 7 8 2 -4 5 -7 1 4 5 8 7 0 6 ...

  8. 6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]

    题目 题目大意 给你一个数列,每次可以选择任意两个相邻的数xxx和yyy,将其删去,并在原来位置插入x+2yx+2yx+2y. 每次询问一个区间,对这个区间进行上述操作.求最后剩下的数最大是多少. 答 ...

  9. JZOJ6362. 【NOIP2019模拟2019.9.18】数星星(star)

    Description Solution 考虑分治,将每一个询问挂在包括它的最大的区间中. 只考虑中点往右的区间的贡献,那么每一个点对于覆盖它的最早的时间有一个贡献. 我们建一个虚树,并且用并查集路径 ...

最新文章

  1. pycharm专业版使用jupyter notebook并且进行调试
  2. .NET出现频率非常高的笔试题
  3. Deepin v20依赖错误,检测更新失败解决办法
  4. html5 canvas图文编辑器源码_5个微信编辑器,再也不用为公众号发愁啦
  5. 玩转C#控件-常用控件属性
  6. webflow如何使用_我如何使用Webflow构建辅助项目以帮助设计人员进行连接
  7. linux之找出两个文件里面相同的数据
  8. uoj#246. 【UER #7】套路(dp+分块?分类讨论?)
  9. Centos7 安装maven
  10. linux认令牌操作错误,验证令牌操作错误
  11. linux上docker安装centos7.2
  12. 从C#到Objective-C,循序渐进学习苹果开发(2)--Objective-C和C#的差异
  13. 生意倒闭的老板基本死于这两个思维
  14. Android学习2--项目文件列表简单分析
  15. 数据分析/数据挖掘/机器学习---- 必读书目
  16. nfs--samba
  17. echarts地图,及经纬度(省市两级经纬度)
  18. MS08067 第一期 “恶意代码分析”实战班 12.17号开班~
  19. c语言寻找丑数,C语言程序设计100例之(14):丑数
  20. linux下raid0创建教程,Linux 常见 RAID 及软 RAID 创建

热门文章

  1. 计算机态,(计算机)有限态自动机,FSM(finite state machine),音标,读音,翻译,英文例句,英语词典...
  2. mysql sp who_对ASE系统存储过程的剖析-sp_who
  3. robcad和catia是什么关系_proe/CATIA/UG/SolidWorks软件区别与联系
  4. python设置字符间距_python字符串处理以及字符串格式化
  5. maya的颤动怎么做_必看!新手学习MAYA的几个建议
  6. java io 读取多个对象_Java IO系列(五):读写对象ObjectOutputStream和ObjectInputStream详解...
  7. 面试中的网红虚拟DOM,你知多少呢?深入解读diff算法
  8. 平均成绩计算机控件,计算机技术基础(第十二章 文件 )
  9. [JavaWeb-Servlet]概述与快速入门
  10. 高等数学下-赵立军-北京大学出版社-题解-练习8.3