树上行走

题目背景

\(\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([数据已删除])

安徽师大附中%你赛day5 T3 树上行走 解题报告的更多相关文章

  1. 安徽师大附中%你赛day9 T3 贵 解题报告

    贵 问题描述 苟先生的狼狗大军没有追上富先生, 所以他把它们都解雇了, 决定去雇佣一些更好的狗, 不过狗可是很贵的.苟先生有 \(w\) 元钱, 有 \(n\) 条狗可以雇佣, 第 \(i\) 条狗有 ...

  2. 安徽师大附中%你赛day6 T3 Hamsters [POI2010]CHO-Hamsters 解题报告

    [POI2010]CHO-Hamsters 题意: 给出n个互不包含的字符串,要求你求出一个最短的字符串S,使得这n个字符串在S中总共至少出现m次,问S最短是多少? 范围: \(1 \le n \le ...

  3. 安徽师大附中%你赛day2T3 巧克力 解题报告

    巧克力 题目描述 小\(T\)有\(N\)块巧克力, 每块巧克力上都有一句话(由小写英文字母组成,不含标点) .现在每块巧克力都断成了若干截,更糟糕的是,有一些碎片丢失了 ,但是剩下的碎片之间的顺序是 ...

  4. 安徽师大附中%你赛day3T1 怜香惜玉 解题报告

    怜香惜玉 题意: 已知 \(f(x)=\frac{2 \times \sum_{(i,x)=1}^x i}{φ(x)}\) 先给定数据组数\(t\)和\(k\) 每组数据给出\(n\),求\(\sum ...

  5. 安徽师大附中%你赛day9 T2 富 解题报告

    富 题目背景 出于某些原因, 苟先生在追杀富先生. 题目描述 富先生所在的地方是一个\(n\times m\)的网格,苟先生排出了他的狼狗大军,共有\(k\)条狗,第\(i\)条狗所在的位置为\((x ...

  6. 安徽师大附中%你赛day7 T2 乘积 解题报告

    乘积 题目背景 \(\mathrm{Smart}\) 最近在潜心研究数学, 他发现了一类很有趣的数字, 叫做无平方因子数. 也就是这一类数字不能够被任意一个质数的平方整除, 比如\(6\).\(7\) ...

  7. 安徽师大附中%你赛day4T2 演讲解题报告

    演讲 题目背景: 众所周知,\(\mathrm{Zdrcl}\)是一名天天\(\mathrm{AK}\)的高水平选手. 作为一民长者,为了向大家讲述自己\(\mathrm{AK}\)的经验,他决定在一 ...

  8. 安徽师大附中%你赛day4T1 金字塔 解题报告

    金字塔 题目背景: \(Zdrcl\)带着妹子们来到了胡夫金字塔周边旅游, 发现这里正在进行一个有关金字塔的游戏 题目描述: 游戏规则如下: 1. 这里的金字塔是一个 \(N\) 阶的二维金字塔. 2 ...

  9. 「2018-12-02模拟赛」T3 约束排列 解题报告

    3.约束排列(place.pas/cpp/in/out) 问题描述: 给出 n 个互不相同的小写字母,表示出现的字符类型,以及 k 个约束关系: .....,表示 ai 必须出现在 bi 前面(ai, ...

随机推荐

  1. MongoDB学习(1)--安装,基本curd操作

    知识点: 1-MongoDB 安装,启动和卸载 2-基本概念 3-基本的增删改查操作(CURD) 来回顾总结一把学习的mongodb,如果有javascript基础,学习"芒果DB" ...

  2. elasticsearch 5.x 系列之五 数据导入导出

    一.首先给大家发一个福利,分享一个elasticsearch 数据导出工具. esm github 源码地址: https://github.com/medcl/esm 下载编译好的对应elastic ...

  3. python 面向对象 (多态)

    什么是多态?多态就像是人有多种心情,场景不一样心情就会不一样. class Dog: def print_self(self): print('this is dog') class Hsq(Dog) ...

  4. 39-Role以及Claims授权

    asp.net core多鼓励使用claims授权 1-使用role授权 在类或方法上贴上Roles,这样就知道有user的角色才可以访问 [Authorize(Roles="user&qu ...

  5. 20145202马超《网络对抗》Exp4 恶意代码分析

    20145202马超<网络对抗>Exp4 恶意代码分析 1.实验后回答问题 (1)总结一下监控一个系统通常需要监控什么.用什么来监控. 虽然这次试验的软件很好用,我承认,但是他拖慢了电脑的 ...

  6. ssrf小记

    SSRF(Server-Side Request Forgery, 服务端请求伪造),攻击者伪造服务端发起的请求并执行,从而获得一些数据或进行攻击 一.危害 1.对内网的端口和服务进行扫描,对主机本地 ...

  7. vue2018年5月报错No parser and no file path given

    mac电脑直接: rm -rf node_modules rm package-lock.json npm install npm install prettier@~1.12.1 执行完这四个命令, ...

  8. P1215 [USACO1.4]母亲的牛奶 Mother's Milk

    P1215 [USACO1.4]母亲的牛奶 Mother's Milk 题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满 ...

  9. Tapestry 权威讲解-备份

    http://blog.csdn.net/mindhawk/article/details/5021371#introduction

  10. web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址

    web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址   Huang Jie Blog .Com-前端开发 http://www.huangjieblog.com/?feed=rs ...