PTA
pta刷题记录
Coonger
天高人要飞~
展开
-
PAT 1058 选择题 Python版(正则表达式)
这道题翻看了网上很多版本,貌似都没看到过怎么用正则表达式的写法,不知道是不是我的搜索姿势不太对。思路:要解决的主要问题就是如何把括号()里的字母提取出来。我写的正则表达筛选有点丑,如果有更简洁的欢迎指出。提取括号里的内容并略过数字 flag = re.compile(r'[(][0-9](.*?)[)]')这时候筛出来的还包括空格,比如第一个人的答案[' a c', ' b d', ' ...原创 2020-04-05 21:12:33 · 320 阅读 · 0 评论 -
PAT 1074 宇宙无敌加法器 Python版(String的函数)
题意:给出每一位上的进制数,问两数之和?两数为非负,位数不超过N(位数N<=20N<=20N<=20)思路:这个加法很有意思,每一位都对应一个进制,所以在模拟每个数相加时只要div对应的进制就可以啦~这道题对字符串函数的用法也是比较综合的。先填充至同一长度zfill()函数rstrip()函数抹去右端多余的0,相应的其实是数字的前导零逆序输出用切片 setp = ...原创 2020-04-05 20:30:32 · 373 阅读 · 0 评论 -
PTA 1055 集体照 Python实现(deque大法好!)
题目:拍集体照时队形很重要,这里对给定的 NNN 个人KKK 排的队形设计排队规则如下:每排人数为 N/K(向下取整),多出来的人全部站在最后一排;后排所有人的个子都不比前排任何人矮;每排中最高者站中间(中间位置为 m/2+1,其中 m 为该排人数,除法向下取整);每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186...原创 2020-03-15 22:10:32 · 166 阅读 · 0 评论 -
PAT 1042字符统计 1057 数零壹 Python版(Counter计数)
题意:输入一串字符串,有任意字符。统计字符串中出现次数最多的字母,统计时不用区分大小写,但是输出要小写字母。思路:直接用 Counter 计数主要问题是排序,按次数从大到小排序,如果有并列,就输出字母序小的,也就是说一个关键词从大到小,一个关键词从小到大,可以把先数字取负,然后按升序排列,后得到的结果正是所需的数字从大到小,字母从小到大。输入:This is a simple T...原创 2020-04-05 19:38:26 · 318 阅读 · 0 评论 -
PTA L3-020 至多删三个字符 (线性DP)
题目给定一个全部由小写英文字母组成的字符串,至多删掉其中 3 个字符,结果可能有多少种不同的字符串?长度在[4,106][4, 10^{6}][4,106]内。输入样例ababcc输出样例25思路:状态dp[i][j]dp[i][j]dp[i][j]表示判断到了第 iii 个字符,已删除 jjj 个。对 iii 这个点,无非两种情况,删与不删,可写出状态转移方程dp[i][j]=dp[i−1][j]+dp[i−1][j−1]dp[i][j] = dp[i-1][j] + dp[i-1]原创 2020-08-19 10:40:20 · 358 阅读 · 0 评论 -
PTA L3-011 直捣黄龙(dijkstra)
题意n个点,m条边,给出原点、终点。求从原点出发到终点的最短路,如果有不同的最短路径,就选择城市数(点)最多的,如果点数也一样,就选择路径上权重最大的。输入样例10 12 PAT DBYDBY 100PTA 20PDS 90PMS 40TAP 50ATP 200LNN 80LAO 30LON 70PAT PTA 10PAT PMS 10PAT ATP 20PAT LNN 10LNN LAO 10LAO LON 10LON DBY 10PMS TAP 10TAP DB原创 2020-08-15 15:52:30 · 549 阅读 · 0 评论 -
PTA L3-004 肿瘤诊断 (三维BFS)
思路:看到这道题,大概率用BFS,考虑题目本题的情景,一开始因为不理解题目中的“两个像素被认为是“连通的”,如果它们有一个共同的切面”这句话,还在想为什么不能用二维,地图规模宽LM,长N,方向的话上下左右对角线?不对啊,这样就4个 or 8个方向了,整不出6个方向啊?不过看图示上下左右前后正好六个方向,而且题目输出也暗示了“输出肿瘤的总体积。”可以考虑三维,所以可以把地图规模看成长M,宽N,高L。再者就是在最后比最普通的搜索多了判断当前块面积大小是否大于 ttt。常规搜索步骤:把未搜索过且位置为1原创 2020-07-29 22:32:53 · 250 阅读 · 0 评论 -
PTA L3-002 特殊堆栈(STL模拟)
题意:模拟堆栈,有三种操作Push,Pop,PeekMedian,其中“取中值”操作是取元素大小排名中间的元素。若操作非法,则对应输出 Invalid。输入:17PopPeekMedianPush 3PeekMedianPush 2PeekMedianPush 1PeekMedianPopPopPush 5Push 4PeekMedianPopPopPopPop输出:InvalidInvalid322124453Invalid思路一开原创 2020-07-29 22:18:20 · 312 阅读 · 0 评论 -
PTA L3-003 社交集群(并查集)
题意:1−N1- N1−N个人提供KKK个兴趣节点,222人只要有同一个兴趣就算同个集合,求集群的个数。数据范围:N(<=1000)N ( <= 1000)N(<=1000), 兴趣编号[1,1000][1, 1000][1,1000]的整数输入样例:83: 2 7 101: 42: 5 31: 41: 31: 44: 6 8 1 51: 4输出样例:34 3 1思路:并查集无非是Union和find操作。预初始化的节点是——兴趣1 ~ 1000原创 2020-07-29 22:31:40 · 254 阅读 · 0 评论