1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

设最终听到的序列为字符串 sss(仅含 L/R)。一次击打会产生 1 个或 2 个相同字母:

  • 左鼓:产生 L 或 LL;右鼓:产生 R 或 RR。

观察可知:一次击打不会跨越字母种类边界,因此答案对每个由相同字符组成的连续段(run) 彼此独立,再把每段的方案数相乘即可。

对一个长度为 kkk 的 L(或 R)连续段,我们要把它切分成若干块,每块长度只能是 1 或 2(分别代表一次击打发出 1 个或 2 个相同的声)。

P3756.第2题-打击序列计数

    1000ms Tried: 40 Accepted: 12 Difficulty: 5 所属公司 : 米哈游
    算法与标签>动态规划

题目内容

在这个世界里,有左右两个大鼓。对左鼓的击打记为 "LLL",对右鼓的击打记为 "RRR"。有趣的是,一次击打可能发出一次声音,也可能因为共鸣而发出两次相同的声音:

  • 一次左鼓击打要么发出 "LLL",要么发出 "LLLLLL";
  • 一次右鼓击打要么发出 "RRR",要么发出 "RRRRRR"。

你只记录到了最终听到的声音序列s (仅由字符 'LLL' 和 'RRR' 组成)。请问,有多少种原始的击打序列 ppp 能产生该声音序列?

输入描述

第一行包含一个整数 t(1≤t≤105)t(1≤t≤10^5)t(1≤t≤105),表示测试用例数。 接下来 ttt 行,每行包含一个非空字符串 sss ,由字符 'LLL' 和 'RRR' 组成,长度记为 ∣s∣∣s∣∣s∣ 。 保证所有测试用例中 ∑∣s∣≤2×105∑∣s∣≤2×10^5∑∣s∣≤2×105。

输出描述

对于每个测试用例,输出一行,包含一个整数——能产生该声音序列的击打序列总数。 由于答案可能很大,请对 109+710^9+7109+7 取模后输出。

样例1

输入

5
LR
LLRR
LRLR
L
RRR

输出

1
4
1
1
3

说明

LR:

  • 左鼓击打一次发出 L,右鼓击打一次发出 R;
  • 只有一种击打序列 LR。

LLRR:

  • 左鼓击打一次发出 LL,右鼓击打一次发出 RR;
  • 左鼓击打两次各发出 L,右鼓击打一次发出 RR;
  • 左鼓击打一次发出 LL,右鼓击打两次各发出 R;
  • 左鼓击打两次各发出 L,右鼓击打两次各发出 R;
  • 共 4 种击打序列。

RRR:

  • 右鼓击打一次发出 RR,右鼓击打一次发出 R;
  • 右鼓击打一次发出 R,右鼓击打一次发出 RR;
  • 右鼓击打三次各发出 R;
  • 共 3 种击打序列。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 3, 133ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?