cf劲啊

原题:

We have a string of letters 'a' and 'b'. We want to perform some operations on it. On each step we choose one of substrings "ab" in the string and replace it with the string "bba". If we have no "ab" as a substring, our job is done. Print the minimum number of steps we should perform to make our job done modulo 10^9 + 7.

The string "ab" appears as a substring if there is a letter 'b' right after the letter 'a' somewhere in the string.

the initial string consisting of letters 'a' and 'b' only with length from 1 to 10^6.

大意:

给一个ab串,你每次能挑一个ab变成bba,问至少变多少次不能再变

串长1e6,答案膜1e9+7

b……bba?

我就是叫紫妈怎么了?

恩核心思路就是ab变成bba后相当于把a往右挪了一下并在a前面添加一个b

这样就好写了从右往左扫,如果遇到b就把b的个数+1,如果遇到a就把答案加上a后面b的个数并把b的个数翻倍

因为是从右往左扫的,这样就保证a往右挪的时候为后面的a添加的b的个数尽可能少,保证答案最小

不需要考虑一串a连在一起的情况,如果最右边全是a,那么不用管了对答案没贡献,就算左边的a挪过去也越不过这一串a

如果中间是一串a,那么右端点一定接了一个b,最右边的a挪过去后次右边又接上了b,这样就能保证所有的a都能挪到末尾

代码很好写,python13行(没压行,写的比较散

代码:

 1 mo = 1000000007
 2 a = raw_input()
 3 b, c = 0, 0
 4 i = len(a) - 1
 5 while i >= 0:
 6     if a[i] == 'a':
 7         c = (c + b) % mo
 8         b = (b * 2) % mo
 9     else:
10         b = (b + 1) % mo
11     i = i - 1
12
13 print c

View Code

转载于:https://www.cnblogs.com/JSL2018/p/6811233.html

codeforce 804B Minimum number of steps相关推荐

  1. 452 Minimum Number of Arrows to Burst Balloons

    452 Minimum Number of Arrows to Burst Balloons 文章目录 452 Minimum Number of Arrows to Burst Balloons 1 ...

  2. LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)

    LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...

  3. 871. Minimum Number of Refueling Stops

    题目: A car travels from a starting position to a destination which is target miles east of the starti ...

  4. LeetCode刷题:871. Minimum Number of Refueling Stops

    LeetCode刷题:871. Minimum Number of Refueling Stops 原题链接:https://leetcode.com/problems/minimum-number- ...

  5. LeetCode 871. Minimum Number of Refueling Stops 最少加油次数

    LeetCode 871. Minimum Number of Refueling Stops 本题是LeetCode 871题,最少加油次数. 题目描述 A car travels from a s ...

  6. LeetCode871.Minimum Number of Refueling Stops

    871.Minimum Number of Refueling Stops(加油站的最小数量) Description Difficulty: hard Example 1: Example 2: E ...

  7. 算法设计与分析:Minimum Number of Refueling Stops(Week 11)

    学号:16340008 题目:871. Minimum Number of Refueling Stops Question: A car travels from a starting positi ...

  8. LeetCode: 871. Minimum Number of Refueling Stops

    LeetCode: 871. Minimum Number of Refueling Stops 题目描述 A car travels from a starting position to a de ...

  9. LeetCode 202次周赛 1553. Minimum Number of Days to Eat N Oranges

    1553. Minimum Number of Days to Eat N Oranges 题目描述 思路分析 弱智动态规划 可行的动态规划 直觉上正确的思路 代码实现 证明正确性 复杂度分析 总结 ...

最新文章

  1. 《强化学习周刊》第33期:UdeM | 基于不确定性估计的样本高效深度强化学习
  2. 平台系统云服务器配置,01-云平台连接配置
  3. c语言 main函数
  4. PAT乙级(1002 写出这个数 )
  5. [转]TensorFlow---岂止深度学习
  6. WebBrowser自动点击链接 广告自动点击 Ads Auto Click
  7. paip. mysql如何临时 暂时 禁用 关闭 触发器
  8. Quartus 与 ModelSim 联合仿真详细步骤
  9. 高数习题第七章总练习题(下)
  10. ble HCI 数据格式
  11. PXE+HTTP+TFP+DHCP自动化部署
  12. C++实现的windows系统下的WIFI管理
  13. java导出excel 方式_java导出Excel通用方法
  14. linux搭建天地伟业easy7,easy7视频监控系统客户端|天地伟业easy7监控客户端简洁版(Easy7 Smart Client Express)下载 V7.12 官方版 - 比克尔下载...
  15. 【BSP视频教程】STM32H7视频教程第3期:整体捋顺STM32H7的HAL库和LL库的框架,再配合寄存器造轮子找到更适合自己的玩法(2022-01-21)
  16. 数学上的整数拆分问题
  17. 最牛逼android上的图表库MpChart(一) 介绍篇
  18. 2021年中式烹调师(初级)考试及中式烹调师(初级)模拟考试题
  19. 主成分分析二级指标权重_主成分分析法 - 确定多因素影响权重
  20. 了不起的程序猿,是从猴子进化来的!

热门文章

  1. 服务器打包运营级H5商城源码
  2. docker版iOS超级签应用分发平台源码分享[带免签封装]
  3. WordPress作品设计素材图片站资讯文章教程uigreat主题
  4. B站一键BV号转AV号PHP单页源码
  5. jsp里加java代码,利用静态内部类为您的代码添加辅助功能-JSP教程,Java技巧及代码...
  6. RabbitMQ入门学习系列(三).消息发送接收
  7. SQL Server Profiler使用方法
  8. 经验总结[系统方面]
  9. 如何使用社会化媒体网络建立个人品牌(国外篇)
  10. iOS App的图标,启动画面及其它