jzoj6343-[NOIP2019模拟2019.9.7]Medium Counting【记忆化dfs,dp】
正题
题目大意
给出nnn个字符串SiS_iSi,然后有些???号可以进行随便填字母。
然后要求Si<Si+1S_i<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∑rfl,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】相关推荐
- 【THUWC2019模拟2019.1.18】Counting
Description 羽月最近发现,她发动能力的过程是这样的: 构建一个 V (V<=100)个点的有向图 G,初始为没有任何边,接下来羽月在脑中构建出一个长度为 E 的边的序列,序列中元素两 ...
- 6009. 【THUWC2019模拟2019.1.18】Counting
题意: 羽月最近发现,她发动能力的过程是这样的: 构建一个 VVV 个点的有向图 GGG,初始为没有任何边,接下来羽月在脑中构建出一个长度为 EEE 的边的序列,序列中元素两两不同,然后羽月将这些边依 ...
- jzoj6009. 【THUWC2019模拟2019.1.18】Counting (dp)
Description 羽月最近发现,她发动能力的过程是这样的: 构建一个 V 个点的有向图 G,初始为没有任何边,接下来羽月在脑中构建出一个长度为 E 的边的序列,序列中元素两两不同,然后羽月将这些 ...
- 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= ...
- 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那么 ...
- 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 ...
- 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 ...
- 6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]
题目 题目大意 给你一个数列,每次可以选择任意两个相邻的数xxx和yyy,将其删去,并在原来位置插入x+2yx+2yx+2y. 每次询问一个区间,对这个区间进行上述操作.求最后剩下的数最大是多少. 答 ...
- JZOJ6362. 【NOIP2019模拟2019.9.18】数星星(star)
Description Solution 考虑分治,将每一个询问挂在包括它的最大的区间中. 只考虑中点往右的区间的贡献,那么每一个点对于覆盖它的最早的时间有一个贡献. 我们建一个虚树,并且用并查集路径 ...
最新文章
- pycharm专业版使用jupyter notebook并且进行调试
- .NET出现频率非常高的笔试题
- Deepin v20依赖错误,检测更新失败解决办法
- html5 canvas图文编辑器源码_5个微信编辑器,再也不用为公众号发愁啦
- 玩转C#控件-常用控件属性
- webflow如何使用_我如何使用Webflow构建辅助项目以帮助设计人员进行连接
- linux之找出两个文件里面相同的数据
- uoj#246. 【UER #7】套路(dp+分块?分类讨论?)
- Centos7 安装maven
- linux认令牌操作错误,验证令牌操作错误
- linux上docker安装centos7.2
- 从C#到Objective-C,循序渐进学习苹果开发(2)--Objective-C和C#的差异
- 生意倒闭的老板基本死于这两个思维
- Android学习2--项目文件列表简单分析
- 数据分析/数据挖掘/机器学习---- 必读书目
- nfs--samba
- echarts地图,及经纬度(省市两级经纬度)
- MS08067 第一期 “恶意代码分析”实战班 12.17号开班~
- c语言寻找丑数,C语言程序设计100例之(14):丑数
- linux下raid0创建教程,Linux 常见 RAID 及软 RAID 创建
热门文章
- 计算机态,(计算机)有限态自动机,FSM(finite state machine),音标,读音,翻译,英文例句,英语词典...
- mysql sp who_对ASE系统存储过程的剖析-sp_who
- robcad和catia是什么关系_proe/CATIA/UG/SolidWorks软件区别与联系
- python设置字符间距_python字符串处理以及字符串格式化
- maya的颤动怎么做_必看!新手学习MAYA的几个建议
- java io 读取多个对象_Java IO系列(五):读写对象ObjectOutputStream和ObjectInputStream详解...
- 面试中的网红虚拟DOM,你知多少呢?深入解读diff算法
- 平均成绩计算机控件,计算机技术基础(第十二章 文件 )
- [JavaWeb-Servlet]概述与快速入门
- 高等数学下-赵立军-北京大学出版社-题解-练习8.3