(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 的值。

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

转载于:https://www.cnblogs.com/pfypfy/p/9079091.html

20180523模拟赛T1——前缀?相关推荐

  1. 洛谷 10月 csp-s 模拟赛 T1,T2解析及代码

    洛谷 10月 csp-s 模拟赛 T1,T2解析及代码 T1 Magenta Potion 题目描述 给定一个长为 nnn 的整数序列 aaa,其中所有数的绝对值均大于等于 222.有 qqq 次操作 ...

  2. 2019-3-15 模拟赛 T1

    题意 给你一个数 \(k\) ,\(n\) 个桶,有 \(m\) 个桶有容量上限 \(w_i\) ,其它桶则没有.求把数拆开放到各个桶里,最终得到序列的方案数. 数据范围 : \(n,k<=5* ...

  3. 纪中20日c组模拟赛T1 2121. 简单游戏

    T1 2121. 简单游戏 (File IO): input:easy.in output:easy.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 Goto Pro ...

  4. 【2019.7.16 NOIP模拟赛 T1】洗牌(shuffle)(找环)

    找环 考虑每次洗牌其实是一次置换的过程,而这样必然就会有循环出现. 因此我们直接通过枚举找出每一个循环,询问时只要找到环上对应的位置就可以了. 貌似比我比赛时被卡成\(30\)分的倍增简单多了? 代码 ...

  5. 20161023 NOIP 模拟赛 T1 解题报告

    Task 1.纸盒子 (box.pas/box.c/box.cpp) [题目描述] Mcx是一个有轻度洁癖的小朋友.有一天,当他沉溺于数学卷子难以自拔的时候,恍惚间想起在自己当初学习概率的时候准备的一 ...

  6. 7.9模拟赛T1图的遍历(dfs)

    图的遍历(dfs) [题目描述] 对于一个有向图G来说,我们存在一个经典的遍历算法,就是DFS (深度优先搜索遍历).将G以1号点为起点进行DFS后,我们可以 得到G的一棵DFS遍历树T.就此,我们可 ...

  7. ztz11的noip模拟赛T1:愤怒的XiaoX

    链接: https://www.luogu.org/problemnew/show/U47231 思路: 这道题其实就是一道双Lazy线段树裸题 因为我们知道,当k一定时,取反偶数次最后k位等于不取反 ...

  8. 9.20模拟赛T1[聪明的小偷]

    聪明的小偷 (thief.pas/c/cpp) 袋,首先他会先检查每个口袋是不是都有硬币,之后他会计算出第 1 个和第 2 个口袋的硬币数量之和,第 2 个与第 3 个口袋的硬币数量和,如此直到第 n ...

  9. 【信奥题库 NOIP 2020 在线模拟赛 T1】有趣的函数

    题目 https://www.oitiku.com/simulate-contest/5/16 思路 考试的时候思考方向错了,以为是递推 我们可以枚举有多少个e,那么可以计算出来要多少个2 然后我们就 ...

最新文章

  1. java通过抛异常来返回提示信息
  2. Spinnaker:云原生多云环境持续部署的未来这样玩!
  3. Java爬虫技术(一)普通网站爬取图片
  4. Java Arrays.asList()方法详解
  5. websecurity连接mysql_将MySQL连接器JAR放在我的WAR的WEB-INF / lib而不是tomcat lib中,使j_security_check失败...
  6. C#——一个简单的文件管理器
  7. 软件项目组织管理(五)项目范围管理
  8. python的json.dump参数使用
  9. 郑州轻工业学院OJ-杨辉三角
  10. 中间语言MicroSoft Intermediate Language(MSIL)
  11. 五边形组合包络图matlab,华中赛基于遗传算法的钢构件排料问题.docx
  12. 使用sqlplus显示中文为乱码的解决办法
  13. JAVA抛出异常的三种形式
  14. SmartPLS软件如何做有调节的中介作用模型?
  15. CGB2109-Day12-用户模块管理
  16. 如何使用IDEA将代码提交至SVN
  17. 苹果11自带测试软件,9款旗舰系统对比 iPhone 11居然不是最好用的
  18. sql常见语法_常见SQL语法错误以及解决方法
  19. 移动通讯技术--CMWAP和CMNET的区别
  20. Azkaban简介和使用

热门文章

  1. Jenkins 基础篇 - 安装部署
  2. 电路设计——秒表初步
  3. webstorm中如何实现团队成员使用同样的拼写检查规则?
  4. Win10 电脑如何找回已知网络的密码
  5. 中小企业进销存管理系统的应用价值
  6. 机械设计基础B【5】轮系
  7. 论文降重的网站和工具
  8. 【大数据 OLAP ClickHouse 引擎】ClickHouse 系统架构和存储引擎实现原理 : 为什么 ClickHouse 这么快? Why is ClickHouse so fast?
  9. 2022年9月奥鹏网络教育大学英语B统考题库试题
  10. OpenCasCade7.2(OCC)+vc10的配置过程