安徽师大附中%你赛day5 T3 树上行走 解题报告
树上行走
题目背景
\(\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 树上行走 解题报告相关推荐
- 武汉工程大学第一届程序设计女生赛(牛客contest 4746)解题报告 Apare_xzc
武汉工程大学第一届程序设计女生赛解题报告 xzc 2020.3.8 比赛链接:武汉工程大学第一届程序设计女生赛 A. Multiplication (101/861) 分析: 问x平方几次后就会> ...
- 【WZOI第二次NOIP模拟赛Day1T2】世界末日 解题报告
[WZOI第二次NOIP模拟赛Day1T2]世界末日 Problem 2 世界末日 (doomsday.pas/c/cpp) 背景 话说CWQ大牛终于打开了那扇神秘大门,但迎接他的不是什么神秘的东西, ...
- 2011大纽约区域赛试题 Decoding EDSAC Data 解题报告
2011大纽约程序设计竞赛,D题 Decoding EDSAC Data(题目链接). D ⋅ Decoding EDSAC Data The world's first full-scale, st ...
- ACM/ICPC2016沈阳网络赛(不完全)解题报告
比赛地址: http://acm.hdu.edu.cn/contests/contest_show.php?cid=724 1003.hannnnah_j's Biological Test 题目大意 ...
- 2020蓝桥杯国赛Java大学B组解题报告
文章目录 试题 A: 美丽的 2 试题 B: 扩散 试题 C: 阶乘约数 试题 D: 本质上升序列 试题 E: 玩具蛇 试题 F: 蓝肽子序列 试题 H: 画廊 试题 A: 美丽的 2 问题描述 小蓝 ...
- 2018第九届蓝桥杯省赛B组一点反思+解题报告
划水!诶难受,可能自己是那种不会比赛的人吧.溜了溜了. 1.标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写 ...
- 关于安徽赛区推广校赛的实施办法
关于安徽赛区 推广校赛的实施办法 全国组委会: 安徽赛区作为第一个省级赛区自2010年举办至今,受到安徽省教育厅和安徽各高校高度认可,是安徽省教育厅重点支持的大学生学科和技能竞赛A类赛事.但安徽赛 ...
- 中国最新奥数竞赛成绩出炉:南师大附中女生严彬玮满分夺冠!60人国家集训队名单公布...
雷刚 发自 副中心 量子位 报道 | 公众号 QbitAI 第35届中国数学奥林匹克竞赛成绩公布. 同时也意味着新一届中国奥数国家集训队,正式集结. 60名中学生. 湖北贡献9人.广东7人,上海6人 ...
- 2021年兰州师大附中高考成绩查询,2021年兰州重点高中名单及排名,兰州高中高考成绩排名榜...
"一千个人眼中,就有一千个哈姆雷特".关于兰州高职学校排名,每个人的观点也是各不相同,今天就给大家分享一下我心中的兰州高中排名及格局分布,主要参考依据是近年中考录取分数线及高考成绩 ...
- 2021年兰州师大附中高考成绩查询,西北师范大学附属中学2021年排名
我们想了解的是这个学校的师资怎样,办学这么久以来有获得了什么样的成绩,获得了什么样的荣誉,这个学校是省级示范高中还是市级示范高中,而这个级别的什么样的排名情况,下面我为大家整理了作为省级示范高中学校的 ...
最新文章
- 我们为什么要探索人脑的奥秘?
- thinking in object pool
- commit与rollback命令
- mysql 临时表 插入_mysql临时表插入数据有关问题
- geometry-api-java 学习笔记(四)多线段 polyline
- 几个简单的Linux驱动程序
- Vue指令之v-on
- 36. In Depth Magento System Configuration
- 160个crackme 008 Andrénalin.1
- 有哪些软件堪称「神器」,却不被大众所知?
- ffmpeg h264 视频编码 模糊问题、MP4播放速度快问题
- Vue-amap 实现获取定位功能
- 苹果显示付款方式无效_最全实用收藏贴,如何设置苹果手机支付?令人头疼的问题终于解决...
- Rstudio 更改工作路径和安装包的路径
- DLL注入_远程线程注入
- 【Java基础】Map遍历的5种方式
- 十三道Python练习题
- eureka注册中心wro.css wro.js 404
- 美宇航局下一个挑战项目:高科技飞艇
- Vue-Router的push和replace方法[Uncaught (in promise) Error]解决方案