zoukankan      html  css  js  c++  java
  • EOJ Monthly 2020.7 A. 打字机(前缀和+思维)

    Cuber QQ 长期在网络上与他人对线,一天,他发明了一台神奇的打字机。这台打字机只能处理由 a,b,X 构成的字符串。具体来说,打字机能够执行如下三种操作。
    •	操作1:将任意一个 X 替换为 aX 。
    •	操作2:将任意一个 X 替换为 aXbX 。
    •	操作3:删除任意一个 X 。
    打字机启动时,屏幕上有且仅有一个 X 。
    现在 Cuber QQ 想要打出一个仅包含 a , b 的字符串 s 。但是他有选择困难症,注意到,操作 1 和操作 2 都能生成字符 a 。如果 s 中的某个 a 既可以通过操作 1 得到,又可以通过操作 2 得到,Cuber QQ 就会因为难以抉择而不快乐。
    Cuber QQ 为了向你详细说明这一点,他决定把操作 1 生成的 a 标记为 a1 ,把操作 2 生成的 a 标记为 a2 。在这种表示下,Cuber QQ 是否快乐等价于通过各种操作方式(如果存在)生成的字符串 s 是否完全一样。
    现在 Cuber QQ 把这个字符串 s 告诉你,请你告诉他,他是否能成功打出这个字符串,如果能够打出这个字符串,你还要告诉他,他是否快乐。
    输入格式
    本题有多组测试数据,第一行包含一个整数 T (1≤T≤105)
    之后 T 行,每行是一个仅包含 a , b 的字符串 s (1≤|s|≤106)
    数据保证所有字符串的长度之和 ∑|s|≤106 。
    输出格式
    输出 T 行,分别对应每组数据。
    如果Cuber QQ可以打出这个字符串,并且开心,输出 Happy Fang。
    如果Cuber QQ可以打出这个字符串,但不开心,输出 Sad Fang。
    如果Cuber QQ无法打出这个字符串,输出 Dead Fang。
    通过观察可以知道,对于aXbX可以把aX插在中间得到aaXbX,进而得到a2a1b,也可把aXbX插在aX中并删去X得到a1a2b,因此a的数量和b的数量完全相等的串才会让其开心,然后我们可以在这个全由2操作生成的串的后面添加aX,不改变其开心与否。因此在最后一个出现b的位置判断a和b的前缀和是否相等就能判断是否开心。同时,如果某个位置b的前缀和大于a的前缀和,这个字符串无法打出,剩下的情况都是可以打出但不开心。
    具体证明还是看官方题解吧…
    
  • 相关阅读:
    每次运行caffe代码之前需要考虑修改的地方
    caffe solver 配置详解
    python获取当前文件路径以及父文件路径
    Python 文件夹及文件操作
    安装NVIDIA驱动时禁用自带nouveau驱动
    博客园转载其他博客园的文章:图片和源码
    分布式开放消息系统(RocketMQ)的原理与实践
    RocketMQ基本概念及原理介绍
    rocketmq 4.3.2 解决远程不能消费问题,解决未识别到公网IP问题
    osx免驱网卡推荐
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/13334876.html
Copyright © 2011-2022 走看看