立志用最少的代码做最高效的表达


PAT乙级最优题解——>传送门


“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

输入格式:
每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。

输出格式:
每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO。

输入样例:
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
输出样例:
YES
YES
YES
YES
NO
NO
NO
NO


解析

规则:
1、不能有除P、A、T以外的其他字母

2、如果P和T中间有一个A, 那么P左边的A和T右边的A个数相等(规则2) 如:AAPATAA、AAAAPATAAAA、PAT

3、规则3是一个基于规则2递归的规则, 推导过程如下;
由规则2知:
APATA是正确的, 则APAATAA是正确的。
由于APAATAA是正确的, 则APAAATAAA是正确的。

不难看出规律,即P左边A的个数乘以P和T中间A的个数,等于P右边A的个数。 有了这个公式,剩下的就只剩编码了。


#include<bits/stdc++.h>
using namespace std;
int a[300] = {0};
int main() {int n; cin >> n; while(n--) {bool flag = false;string s; cin >> s;int len = s.length();memset(a, 0, sizeof(a));int p = 0, t = 0;for(int i = 0; i < len; i++) {a[s[i]]++;if(s[i] == 'P') p = i;if(s[i] == 'T') t = i;}
//      cout << p << ' ' << t << '\n';if(a['P']+a['A']+a['T']!=len) { flag = true; }else {if(t-p==2 && (p == (len-t-1))) { cout << "YES\n"; goto loop; } else if(t-p>=3 && (t-p-1)*p==len-t-1) { cout << "YES\n"; goto loop; } else flag = true;}if(flag) cout << "NO\n";loop:;}return 0;
}

耗时


博主的碎碎念

严重怀疑刷乙级刷的脑子浆糊了…颈椎疼脑袋疼,怕不是要挂了。。

讲真,强烈建议买一个人体工学椅, 带靠枕带护腰的那种, 钱什么的无所谓,小命最重要。

1003 我要通过! (20分)_26行代码AC相关推荐

  1. 1081 Rational Sum (20 分)_22行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given N rational numbers in the form numerator/denominator, you a ...

  2. 【简洁代码】1028 List Sorting (25 分)_26行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Excel can sort records according to any column. Now you are suppo ...

  3. 1094 谷歌的招聘 (20分)_25行代码AC

    立志用最少的代码做更高效的表达 PAT乙级最优题解-->传送门 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com ...

  4. 【测试点分析】1067 试密码 (20分)_20行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死.本题就请你实 ...

  5. 1073 多选题常见计分法 (20 分)_66行代码AC

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项, ...

  6. 【简便解法】1077 互评成绩计算 (20分)_32行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个 ...

  7. 【简便解法】1074 宇宙无敌加法器 (20分)_40行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都 ...

  8. 【测试点分析】1072 开学寄语 (20分)_42行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad ...

  9. 【简洁代码】1053 住房空置率 (20分)_22行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内 ...

最新文章

  1. 抖音、快手和直播行业的火爆究竟给了谁机会?
  2. 人工智能技术改变传统驾驶行为
  3. 解析Objective-C中多态、动态类型和动态绑定
  4. 几种适合开发用的在线编辑器-推荐及下载
  5. 彻底搞清楚map和flatmap
  6. java 手机网站 cookie操作_java操作cookie问题
  7. USACO / Sorting a Three-Valued Sequence (简单题,方法正确性待证)
  8. java jar metainf_java – 从生成的jar文件中排除META-INF / maven文件夹
  9. su root 后还是不能使用useradd ,useradd 等命令
  10. ios的延迟执行方法
  11. 计算机多媒体技术视差估计,立体视觉中视差估计算法研究
  12. [转载] python的 for、while循环、嵌套循环
  13. LOCAL_MODULE_TAGS 选项说明
  14. 数字滤波器的简单使用
  15. 前后端ajax分离如何做seo,前后端分离 seo
  16. 密码的输入问题(do while()和st1.equals(st2)的使用)
  17. [乡土民间故事_徐苟三传奇]第八回_张财主误喊“你来看”
  18. 学术论文投稿第五弹——如何写Discussion
  19. Excel2016工作表解除密码保护
  20. # CF #807 Div.2(A - D)

热门文章

  1. 浅谈 FTP、FTPS 与 SFTP
  2. linux 如何查看应用程序进程号、端口
  3. Python2 常见问题
  4. 双指针解决力扣两/三数之和问题
  5. 音视频技术开发周刊 | 217
  6. 从Satin到Lyra 为何微软、谷歌都盯向音频编解码器?
  7. 畅享音视频技术饕餮盛宴,就在LiveVideoStackCon 上海站
  8. 体育直播软件发展的三个阶段
  9. 如何不用服务器来开发一个小游戏
  10. 2018 中国服务创新大会 | 早鸟票正式开售