
PAT
栗原小野
千里之行,始于足下!
展开
-
PTA A1131 Subway Map(30)
题目:click me~ 题意:给出几条地铁线路,查询从起点站到终点站的经停次数最少的路线,如果经停次数相同,输出换乘次数最少的路线。 解题思路:需要一遍DFS,DFS中要维护两个变量:mincnt中途经停最少的次数,mintransfer需要换乘的最小次数 步骤一:计算换乘次数的方法:在line[10000][10000]的数组中保存每两个相邻站中间的路是几号线。从头到尾遍历最终的路径,preline是前一小段的线路编号,若当前小段的线路编号与preline不同,说明有一个换乘,累加器加1; 步骤原创 2020-07-05 11:29:18 · 372 阅读 · 0 评论 -
PTA A1034Head of a Gang(30)
题目:click me~ 题意: 给出若干人之间的通话记录(视为无向边),有通话记录的两人视为一组,这些通话将他们分为若干组。每组总的边权之和为该组的权值,每个人的点权为该人参与的通话长度之和。再给定一个阈值k,若某组的权重超过k,并且该组人数大于2,那么视为犯罪团伙“gang”,每个犯罪团伙有且仅有一个头目,头目为该组中点权最大的人。要求输出犯罪团伙个数,并且按照头目姓名字典序输出每个犯罪团伙的头目及成员人数。 解题思路: 步骤一:首先 ...原创 2020-06-23 23:48:56 · 241 阅读 · 0 评论 -
debug错误汇总
1.赋值语句中=写成==。maxheight=height; 2.遍历容器vector的范围。for(int i =0;i<temp.size();i++) 循环判断条件不可以用<=. 3.set.end()返回的是set的大小,而不是set最后一个元素。原创 2020-05-28 13:30:14 · 1627 阅读 · 0 评论 -
PTA A1056Mice and Rice(25分)
题目:click me~ 题意:给出NP只老鼠的质量和它们的初始顺序,按每NG只分为一组,最后剩下的为一组。对每组老鼠,选出质量最大的1只晋级,晋级的老鼠数就等于该轮分组组数。对这些晋级的老鼠再按上面的方法每NG分为一组,选出质量最大的一批继续晋级,这样到最后只剩下1只老鼠,排名为1。按照原输入顺序输出这些排名。 解题思路: 步骤一:开出一个结构体mouse,用以记录每只老鼠的质量和排名。定义一个队列,在算法过程中按顺序处理每轮的老鼠。 步骤二:首先算出组数group。 1.用temp记录原创 2020-06-13 23:26:29 · 252 阅读 · 0 评论 -
PTA A1096 Consecutive Factors(20分)
题目:click me~ 题意:给出整数N,需要找到连续因子的最大个数,若有多个,输出第一个数最小的那个序列。 解题思路: 步骤一:首先注意到,N不会被除自己外的大于sqrt(N)的整数整除,因此只需要从2~sqrt(N)遍历连续整数的第一个,求此时N能被最多多少个连续整数的乘积整除。在此过程中,如果发现长度比当前最长长度anslen更长的情况(anslen初始化为0),就更新anslen和对应第一个整数ansi。 步骤二:若遍历结束后anslen还是等于0,那么说明答案就是N本身;否则,输出[an原创 2020-06-11 22:14:37 · 418 阅读 · 0 评论 -
PTA A1049Counting Ones(30分)
题目:click me~ 题意:给出一个数字n(n<=2^30),求1~n中出现数字1的总数。 解题思路:这道题用枚举来做肯定是会超时的。恰当的方法是寻找特殊数字找规律,再拓展到一般去。 令n=30710,令数位从低位到高位分别为1号位、2号位、3号位、4号位及5号位。 (1)考虑1号位在1~n过程中在该位可能出现的1的个数 n在1号位左侧是3071。 由于1号位为0(小于1),因此在1~n中,仅在高四位为0000~3070的过程中,1号位才可取到1。 因此在1~n过程中,1号位将出现3原创 2020-06-09 21:22:56 · 249 阅读 · 0 评论 -
PTA A1044Shopping in Mars (25分)
题目:click me~ 题意:给出一个数字序列和一个数S,在数字序列中求出所有和值为S的连续子序列,(区间下标左端点小的先输出,左端点相同时右端点小的先输出)。若没有这样的序列,求出和值大于S但最小的子序列。 解题思路: 令sum[i]表示A[1]到A[i]的和值,由于序列都是正值,因此sum[i]一定是严格单调递增的,(初始化sum[0]=0)。这样做的好处在于,若要求连续子序列A[i]到A[j]的和值,只需要计算sum[j]-sum[i-1]即可。 有了严格单调递增的sum数组,那就可以用二分原创 2020-06-06 19:13:10 · 157 阅读 · 0 评论 -
PTA A1010 Radix(25分)
题目:click me~ 题意:输入4个正整数N1,N2,tag,radix,tag=1表示N1为radix进制数,tag=2表示N2为radix进制数。N1,N2不超过10个数位,每个数位均为0~9或a~z。0~9表示数字0~9,a~z表示数字10~35。 求未知进制的那个数是否存在和另一个数在十进制下相等的进制,若存在,则输出满足条件的进制;否则输出“Impossible”。 解题思路: 步骤一:将已知进制的数放在N1,未知进制的数放在N2,便于后面统一计算。 步骤二:将N1转换为十进制,使用原创 2020-06-05 22:24:46 · 251 阅读 · 0 评论 -
PTA A1033 To Fill or Not to Fill (25分)
题目:click me~ 题意:起点和终点的距离为D,油箱最大油量Cmax,单位汽油能支持前进Davg,给出N个加油站的单位油价和距离起点的距离。汽车初始位于起点,油箱为空。求从起点到终点的最小花费。若无法到达终点,则输出最大行驶距离。 解题思路: 步骤一:把终点视为单位油价为0,离起点距离D的加油站,将所有加油站按距离从小到大排序。如果最近的加油站距离不为0,那么无法出发(初始油箱为空),输出“the maximun travel distance =0.00";如果最近加油站距离为0,则进入步骤二原创 2020-06-03 12:26:38 · 169 阅读 · 0 评论 -
PTA B1020 月饼(25分)
题目:click me~ 题意:有月饼需求量D,已知n种月饼各自的库存量和总售价,问如何销售这些月饼,使得销售收益最大。 解题思路: 步骤一:采用“总是选择单价最高的月饼出售,可以获得最大的利润”的贪心策略。因此求出所有月饼的单价,从高到低排序。 步骤二:从单价最高的月饼开始枚举: 1.若该种月饼库存量不足以填补需求量,那么将该种月饼全部售出,需求量减去该月饼的库存量,收益值增加月饼的总售价。 2.若该种月饼库存量足够供应需求量,那么只提供需求量大小的月饼,收益值增加月饼单价*需求量,需求量减为原创 2020-06-03 09:31:38 · 214 阅读 · 0 评论 -
PTA A1084 Broken keyboard(20分)
题目:click me~ 题意:给出两个字符串,第一个为原本想要输出的字符串,第二个是坏键盘实际输出的字符串。 解题思路: 需要解决两个问题: 1.如何在英文字母不区分大小写的情况下判断哪些字符在第一个串中出现却没在第二个串中出现。 2.如何保证一个字符只输出一次,且英文字母全用大写。 步骤一:对于第一个问题,枚举第一个字符串中的字符,对当前枚举字符c1,枚举第二个字符串中的字符c2,若遇到小写字母,则全部转换成大写。之后判断c1和c2是否相等,若相等,说明在第二个字符串中出现过,不予输出;若不原创 2020-06-01 15:26:27 · 172 阅读 · 0 评论 -
PTA A1075PAT Judge(25分)
题目:click me~ 题意:PAT考试有N个考生,K道题,给出M条提交记录。交题的分值要么是-1(没有通过编译),要么是【0,满分】区间内的数。 要求对考生按下面规则排序: 1.总分由高到低; 2.若总分相同,则按完美解题数由高到低; 3.总分+完美解题数都相同,按准考证号由小到大排序。 输出规则注意点: 1.总分相同,则排名相同,但每个人都占一个排位。 2.若某考生整场考试都没提交,或者没有通过编译的提交,那么不输出该考生信息。 3.对需要输出的考生,考生某道题没有提交过,那么输出“原创 2020-05-31 13:02:12 · 177 阅读 · 0 评论