树上行走

题目背景

\(\mathrm{Smart}\) 的脑洞非常大, 经常幻想出一些奇怪的东西。

题目描述

某一天,\(\mathrm{Smart}\) 幻想出了一棵没有边际的二叉树,脑补着在那棵二叉树上行走的场景。

\(\mathrm{Smart}\) 一开始在二叉树的根, 然后 \(\mathrm{Smart}\) 写下了一个由'L','R'两种字符构成的串,他称这个串为初始串,按照这个串的顺序, 碰到一个'L'就移动到左儿子,碰到一个'R' 就移动到右儿子。

\(\mathrm{Smart}\) 最后的位置就是他接下来操作的起点。

然后 \(\mathrm{Smart}\) 有写下一个串,他称这个串为操作串,由'U','L','R'三种字符构成,'U'表示移动到当前点的父亲(特殊地, 我们定义根节点
的父亲为根自己) ,'L','R'同上。

但是 \(\mathrm{Smart}\) 觉得直接按照操作串一步一步走十分无聊,所以 \(\mathrm{Smart}\) 会跳过一些操作(心情不好的时候也可能跳过所有操作, 或不跳过) ,现在 \(\mathrm{Smart}\) 想知道他会走到多少种可能的终点。 由于答案可能很大, 所以只需输出答案\(\mod 1,000,000,007\)的值。

输入输出格式

输入格式

第一行一个由'L','R' 两种字符构成的串。

第二行一个由'U','L','R' 三种字符构成的串。

输出格式

说明:

输出一行,为答案\(\mod 1000000007\)。

\(30\%\)的数据: 初始串长度\(\le 10\),操作串长度\(\le 5\);

\(50\%\)的数据: 初始串长度\(\le 100\), 操作串长度\(\le 10\);

另有\(20\%\)的数据: 操作串中没有'U'操作。

\(100\%\)的数据: 初始串长度\(\le 10^5\),操作串长度\(\le 10^5\)。


感觉非常神的一题,考试时至少想了两个小时无果。

想的是特殊数据,知道特殊数据了以后其实好做了

其间想过 几种简单DP 容斥 打表 子问题分治 字典序(康拓)展开 特殊情况找规律 几个方法 全凉了

事实上后面一段时间我一直在想“一个01串有多少种不同的子序列?”这个抽象的问题,殊不知,原本的题目给出的模型和解法更加贴近。

我们先给出一个大题的思路,然后具体讲解。

将答案分成2^字符集大小的容器进行统计

具体的,我们把统计的节点分为以下4类

分别代表:左右儿子都没去过的点,只去过左儿子的点,只去过右儿子的点,两个儿子都去过的点

我们用容器分别存这四类点的个数

然后从左往右做操作,更新谁谁走成了谁睡

如果加入'U'其实也很简单

只有最开始的'U'是有用的,把最开始的操作存起来,然后碰到一个就倒着弹出一个,更新某个状态就行啦


Code:

#include <cstdio>
#include <cstring>
#define ll long long
const ll mod=1e9+7;
const int N=1e5+10;
char t[N],s[N];
int tot;
ll dp[4];
int main()
{scanf("%s",s+1);tot=strlen(s+1);scanf("%s",t);int n=strlen(t);dp[0]=1;for(int i=0;i<n;i++){if(t[i]=='L'){(dp[1]+=dp[0])%=mod;(dp[0]+=dp[2])%=mod;(dp[3]+=dp[2])%=mod;dp[2]=0;}else if(t[i]=='R'){(dp[2]+=dp[0])%=mod;(dp[0]+=dp[1])%=mod;(dp[3]+=dp[1])%=mod;dp[1]=0;}else if(tot){if(s[tot--]=='L') ++dp[1];else ++dp[2];}}ll ans=((dp[0]+dp[1])%mod+(dp[2]+dp[3])%mod)%mod;printf("%lld\n",ans);return 0;
}

2018.8.17([数据已删除])

转载于:https://www.cnblogs.com/butterflydew/p/9494355.html

安徽师大附中%你赛day5 T3 树上行走 解题报告相关推荐

  1. 武汉工程大学第一届程序设计女生赛(牛客contest 4746)解题报告 Apare_xzc

    武汉工程大学第一届程序设计女生赛解题报告 xzc 2020.3.8 比赛链接:武汉工程大学第一届程序设计女生赛 A. Multiplication (101/861) 分析: 问x平方几次后就会> ...

  2. 【WZOI第二次NOIP模拟赛Day1T2】世界末日 解题报告

    [WZOI第二次NOIP模拟赛Day1T2]世界末日 Problem 2 世界末日 (doomsday.pas/c/cpp) 背景 话说CWQ大牛终于打开了那扇神秘大门,但迎接他的不是什么神秘的东西, ...

  3. 2011大纽约区域赛试题 Decoding EDSAC Data 解题报告

    2011大纽约程序设计竞赛,D题 Decoding EDSAC Data(题目链接). D ⋅ Decoding EDSAC Data The world's first full-scale, st ...

  4. ACM/ICPC2016沈阳网络赛(不完全)解题报告

    比赛地址: http://acm.hdu.edu.cn/contests/contest_show.php?cid=724 1003.hannnnah_j's Biological Test 题目大意 ...

  5. 2020蓝桥杯国赛Java大学B组解题报告

    文章目录 试题 A: 美丽的 2 试题 B: 扩散 试题 C: 阶乘约数 试题 D: 本质上升序列 试题 E: 玩具蛇 试题 F: 蓝肽子序列 试题 H: 画廊 试题 A: 美丽的 2 问题描述 小蓝 ...

  6. 2018第九届蓝桥杯省赛B组一点反思+解题报告

    划水!诶难受,可能自己是那种不会比赛的人吧.溜了溜了. 1.标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写 ...

  7. 关于安徽赛区推广校赛的实施办法

    关于安徽赛区 推广校赛的实施办法 全国组委会:   安徽赛区作为第一个省级赛区自2010年举办至今,受到安徽省教育厅和安徽各高校高度认可,是安徽省教育厅重点支持的大学生学科和技能竞赛A类赛事.但安徽赛 ...

  8. 中国最新奥数竞赛成绩出炉:南师大附中女生严彬玮满分夺冠!60人国家集训队名单公布...

    雷刚 发自 副中心  量子位 报道 | 公众号 QbitAI 第35届中国数学奥林匹克竞赛成绩公布. 同时也意味着新一届中国奥数国家集训队,正式集结. 60名中学生. 湖北贡献9人.广东7人,上海6人 ...

  9. 2021年兰州师大附中高考成绩查询,2021年兰州重点高中名单及排名,兰州高中高考成绩排名榜...

    "一千个人眼中,就有一千个哈姆雷特".关于兰州高职学校排名,每个人的观点也是各不相同,今天就给大家分享一下我心中的兰州高中排名及格局分布,主要参考依据是近年中考录取分数线及高考成绩 ...

  10. 2021年兰州师大附中高考成绩查询,西北师范大学附属中学2021年排名

    我们想了解的是这个学校的师资怎样,办学这么久以来有获得了什么样的成绩,获得了什么样的荣誉,这个学校是省级示范高中还是市级示范高中,而这个级别的什么样的排名情况,下面我为大家整理了作为省级示范高中学校的 ...

最新文章

  1. c运行库、c标准库、windows API的区别和联系
  2. 爆笑:可怜的话剧演员
  3. (二十四)【2021 ACL】OntoED: Low-resource Event Detection with Ontology Embedding
  4. Java中的enum详细解析------Java enum 枚举还可以这么用
  5. jQuery Mobile入门必看
  6. 前端跨域问题,以及ajax,jsonp,json的区别
  7. 计算地球经纬度两点之间的弧长
  8. 用Python为直方图绘制拟合正态分布曲线的两种方法
  9. java入门学习(三:数据类型)
  10. 人世轮回,无人相怜--观《艺妓回忆录》有感
  11. 找不到.jack_您不了解Jack关于Firefox的知识!
  12. 移植fastboot到2440
  13. Premiere 快捷键
  14. ur机器人编程-创建程序
  15. android头像设置
  16. Echarts 开源,免费商用图表控件使用整理
  17. 电脑显示计算机资源不足 新用户无法登录,三招解决win10电脑提示资源不足的问题...
  18. 【软件测试】接口——基本测试流程
  19. python egg_Python的egg包
  20. 人生关键角色转变:走向职场人

热门文章

  1. 清华大学计算机相关夏令营,夏令营报名
  2. [JSP]错误信息、错误处理
  3. Fragment already added 解决方式
  4. 数据挖掘学习1--数据挖掘流程
  5. 概率论知识回顾(十):二维连续随机变量分布函数和联合密度函数
  6. 实战篇:VMware Workstation 虚拟机安装 Linux 系统
  7. 淘气的小丁-将图片切换成背景
  8. android4.4 display架构分析,Android display架构分析(五)
  9. 基于负熵的快速不动点算法
  10. WSL 2 网络配置