(a.cpp/c/pas)

Time Limit:1 Sec Memory Limit:128 MB

简化版题意

jyt毒瘤,写了超长的题面,要看完整题面的翻到最后……

老太太认为一个长度为 N 的仅由‘0’、‘1’、‘2’三个字符组成的字符串是贾家的,当且仅当这个字符串满足以下几点:

  1. 这个字符串的所有前缀(不包括这个串本身)都是贾家的。
  2. 这个字符串中字符‘2’出现的个数不少于字符‘1’出现的个数。
  3. 这个字符串中字符‘1’出现的个数不少于字符‘0’出现的个数。

请你求出有多少个长度为 N 的字符串是贾家的,由于答案可能很大,你只需要给出答案 mod 1,000,000,007 的值。

Input

第一行一个正整数 N,表示字符串的长度。

Output

输出一个正整数,表示答案。

Sample Input

3

Sample Output

4

Sample Explanation

这 4 个字符串分别为“221”、“212”、“210”、“222”。

Data Limitation

对于 20%的数据:N≤10。

对于 50%的数据:N≤20。

对于 80%的数据:N≤300。

对于 100%的数据:N≤400。

题解

dp,设\(f[i][j][k]\)表示总长度为\(i\),有\(j\)个\(0\),\(k\)个\(1\)。大力转移?开一个\(400^3\)的数组,发现MLE了,听说可以卷一下,然而不会啊……

int f[maxn][maxn][2];
f[0][0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=i;j++)
for(int k=j;j+k<=i;k++)
{
int l=i-j-k,tp=i%2;
f[j][k][tp]=0;
if(l<k) break;
if(j>0) (f[j][k][tp]+=f[j-1][k][tp^1])%=MOD;
if(k>j) (f[j][k][tp]+=f[j][k-1][tp^1])%=MOD;
if(l>k) (f[j][k][tp]+=f[j][k][tp^1])%=MOD;
if(i==n) (ans+=f[j][k][tp])%=MOD;
}

对于这种方法,首先可以选择打表。跑得又快,又不用管内存(orz dfs大佬cqz神犇)。

当然,也可以选择进一步缩小\(j, k\)的范围。不难发现\(3j\le i,2k\le(i-j)\),于是只要枚举合法的部分即可,数组也可以缩小。

for(int i = 1; i <= n; ++i)
for(int j = 0; 3*j <= i; ++j)
for(int k = j; (k<<1) <= (i-j); ++k)
{
dp[i][j][k] = (dp[i-1][j-1][k] + dp[i-1][j][k]) % mod;
dp[i][j][k] = (dp[i-1][j][k-1] + dp[i][j][k]) % mod;
}

原版题面

且说黛黛自那日弃舟登岸时,便有荣国府打发了轿子并拉行李的车辆久候了。这黛黛常听得母亲说过,他外祖母家与别家不同。他近日所见的这几个三等仆妇,吃穿用度,已是不凡了,何况今至其家。因此步步留心,时时在意,不肯轻易多说一句话,多行一步路,惟恐被人耻笑了他去。自上了轿,进入城中,从纱窗向外瞧了一瞧,其街市之繁华,人烟之阜盛,自与别处不同。又行了半日,忽见街北蹲着两个大石狮子,三间兽头大门,门前列坐着十来个华冠丽服之人。正门却不开,只有东西两角门有人出入。正门之上有一匾,匾上大书“敕造宁国府”五个大字。黛黛想道:这必是外祖之长房了。想着,又往西行,不多远,照样也是三间大门,方是荣国府了。却不进正门,只进了西边角门。那轿夫抬进去,走了一射之地,将转弯时,便歇下退出去了。后面的婆子们已都下了轿,赶上前来。另换了三四个衣帽周全十七八岁的小厮上来,复抬起轿子。众婆子步下围随至一垂花门前落下。众小厮退出,众婆子上来打起轿帘,扶黛黛下轿。黛黛扶着婆子的手,进了垂花门,两边是抄手游廊,当中是穿堂,当地放着一个紫檀架子大理石的大插屏。转过插屏,小小的三间厅,厅后就是后面的正房大院。正面五间上房,皆雕梁画栋,两边穿山游廊厢房,挂着各色鹦鹉、画眉等鸟雀。台矶之上,坐着几个穿红着绿的丫头,一见他们来了,便忙都笑迎上来,说:“刚才老太太边做题还念呢,可巧就来了。”于是三四人争着打起帘笼,一面听得人回话:“黛姑娘到了。”黛黛忙问:“不知老太太做的是什么题?”那丫鬟答道:“说来话长。老太太认为一个长度为 N 的仅由‘0’、‘1’、‘2’三个字符组成的字符串是贾家的,当且仅当这个字符串满足以下几点:

  1. 这个字符串的所有前缀(不包括这个串本身)都是贾家的。
  2. 这个字符串中字符‘2’出现的个数不少于字符‘1’出现的个数。
  3. 这个字符串中字符‘1’出现的个数不少于字符‘0’出现的个数。

请你求出有多少个长度为 N 的字符串是贾家的,由于答案可能很大,你只需要给出答案 mod 1,000,000,007 的值。

题目大概就是这样,黛姑娘还是快进房吧,不然老太太等急了。”

20180523模拟赛T1——前缀?的更多相关文章

  1. 20180523模拟赛T2——前缀!

    简化版题面 jyt毒瘤,写了超长的题面,要看完整题面的翻到最后-- 定义\(f_0(x) = A_x\),\(f_n(x) = \sum^x_{i = 1} f_{n-1}(i)\).给出长度为\(N ...

  2. 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解

    今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...

  3. 20180610模拟赛T1——脱离地牢

    Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...

  4. [NOIP2018校模拟赛]T1聚会 party

    题目链接: 聚会 分析: 设每个点到1号点的距离为dist_{i},每个点的权值为x_{i},目标点到1号点的距离为dist,权值为x,那么对于每一次查询,我们讨论三种情况: ① 目标家庭在区间左边( ...

  5. 【2019.7.25 NOIP模拟赛 T1】变换(change)(思维+大分类讨论)

    几个性质 我们通过推式子可以发现: \[B⇒AC⇒AAB⇒AAAC⇒C\] \[C⇒AB⇒AAC⇒AAAB⇒B\] 也就是说: 性质一: \(B,C\)可以相互转换. 则我们再次推式子可以发现: \[ ...

  6. NOIP欢乐模拟赛 T1 解题报告

    小澳的方阵 (matrix.cpp/c/pas) [题目描述] 小澳最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的小澳打算在电脑上还原这个伟大的布局. 他努力钻研,发现秦始皇布置兵马俑 ...

  7. [模拟赛] T1 高级打字机

    Description 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小 ...

  8. 2019.2.25 模拟赛T1【集训队作业2018】小Z的礼物

    T1: [集训队作业2018]小Z的礼物 我们发现我们要求的是覆盖所有集合里的元素的期望时间. 设\(t_{i,j}\)表示第一次覆盖第i行第j列的格子的时间,我们要求的是\(max\{ALL\}\) ...

  9. [NOIP2018校模拟赛]T1 阶乘

    题目: 描述 有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值. 输入 共两行. 第一行一个正整数n. 第二行n个正整数a[i]. 输出 共 ...

随机推荐

  1. this指北 (一篇读懂)

    this 关键字 涵义 this关键字是一个非常重要的语法点.毫不夸张地说,不理解它的含义,大部分开发任务都无法完成. 前一章已经提到,this可以用在构造函数之中,表示实例对象.除此之外,this还 ...

  2. linux ffmpeg 源码安装教程

    AMR格式是智能手机上的常用音频文件格式,比MP3格式的压缩比大.同样时长的AMR文件大概是MP3的十分之一,所以在移动互联项目中应用比较广泛.但目前AMR格式在个人电脑上应用较少,所以目前大部门播放 ...

  3. IP地址结构(转载)

    分类寻址(网络号+主机号) 在最初定义Internet地址结构时,每个单播IP地址都有一个网络部分,用于识别接口使用的IP地址在哪个网络中可被发现:以及一个主机地址,用于识别由网络部分给出的网络中的特 ...

  4. protobuf, python Enum

    继承enum.Enum的python class,其实是一个, name-value的关系,可以直接className(value)得到一个类.比如 import enum class xx(enum ...

  5. HUT 排序训练赛 G - Clock

    Clock Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u [Submit]   [Go ...

  6. DDR3(4):读控制

    写控制完成后开始设计读控制,写控制和读控制是非常相似的. 一.总线详解 由 User Guide 可知各信号之间的逻辑关系,读数据是在给出命令之后一段时间后开始出现的.图中没有给出app_rd_dat ...

  7. GoF的23种设计模式之行为型模式的特点和分类(1)

    行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配. 行为型模式分为类行为模式和对象行为模式,前者采用继 ...

  8. 示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本

    原文:示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本 一.目的:封装了一些控件到自定义的控件库中,方便快速开发 二.实现功能: 基本实现常 ...

  9. 一.Linux

    1.常用命令 Linux 命令的语法格式命令[选项][参数] Ctrl + l #清屏 clear #清屏 Ctrl +c #结束命令 man su #查看su 帮助信息,q 退出 su --help ...

  10. JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法)

    JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法) 一丶正则的用法 创建正则对象: 方式一: var reg=new ...