PAT甲级
euzmin
这个作者很懒,什么都没留下…
展开
-
PAT甲级 1001. A+B Format (20)
题目:戳这里题意:输入a,b,输出a+b,其中每隔三位要有一个逗号。代码:#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <map>#include <stack>#include <str...原创 2019-08-19 17:34:40 · 100 阅读 · 0 评论 -
PAT甲级 1009 Product of Polynomials (25 分)
题目: 戳这里题意:给出两个多项式,每个多项式有K项,指数位为N,系数为AN,求两个多项式想乘。解题思路:和 这题 可以放一块做,一个是加法,一个是乘法。模拟的过程中,需要注意一点,就是系数为0的时候不用输出。代码:#include <iostream>#include<cstring>using namespace std;const int maxn=...原创 2019-08-21 17:10:07 · 109 阅读 · 0 评论 -
PAT甲级 1010 Radix (25 分)
题目:戳这里题意:输入四个数N1 N2 tag radix,其中tag为1表示N1的基数为radix,tag为2表示N2的基数为radix。求另一个数的基数,使得N1==N2。解题思路:这题用暴力试过了,超时,所以改成二分基数。不得不说一个正确的二分对我来说还是比较难写的,这题扣二分边界和一些坑,花了两个小时才满分。代码中注释的有我个人认为的坑点和我自己测试用的样例。#includ...原创 2019-08-21 21:14:53 · 159 阅读 · 0 评论 -
PAT甲级 1011 World Cup Betting (20 分)
题目: 戳这里题意:说实话,没读明白。解题思路:对着样例模拟就行了。代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn=10+10;double nu[maxn]...原创 2019-08-22 14:27:34 · 116 阅读 · 0 评论 -
PAT甲级 1012 The Best Rank (25 分)
题目:戳这里题意:给出n个学生3门学科的成绩,求m个学生的,3门学科及平均成绩中 排名最高的名次及学科,注意当某学生排名最高的名次有多个时,按A>C>M>E的优先级输出。解题思路:模拟。有一点题目中没讲,就是是否可能出现成绩并列的情况,我先按没有并列做了一下,有个样例不过,然后改成有成绩并列就过了。代码中有一些细节注释:#include <iostream>...原创 2019-08-22 15:22:57 · 207 阅读 · 0 评论 -
PAT甲级 1017 Queueing at Bank (25 分)
题目:戳这里题意:银行8点开门,17点关门,有k个窗口,每个窗口前只能有一人在处理业务。共有n个人排队,问银行营业时间内所有人的平均等待时间。需要注意:只要其到达时间在8~17之间就行,即使这个人到窗口前已经过了17点了也会给他处理业务。如果处理业务时间大于60分钟,则只会给他办理60分钟业务。解题思路:这题和 1014 很像,但不一样,建议对比着做。因为所有人只要在8~17点以...原创 2019-08-31 10:01:10 · 163 阅读 · 0 评论 -
PAT甲级 1018 Public Bike Management (30 分)
题目:戳这里题意:这题的题意理解很关键。总共有1个自行车管理中心和n个自行车摆放处,管理中心在0处,要求到达sp处,求在路径最短的情况下,需要从管理中心送出自行车最少的情况。如果路径最短且送出自行车最少的情况有多种,则求该情况下,回收自行车最少的情况。解题思路:大致方法不难想出,先求最短路径,把最短路径下的所有路径都给记录下来,然后dfs遍历所有情况。(其实我刚看这道题的时候,想的是2...原创 2019-08-31 16:45:40 · 162 阅读 · 0 评论 -
PAT甲级 1068 Find More Coins (30 分)
题目:戳这里题意:给定n个硬币和各个硬币的面值,购买价值为m的货物,问是否能刚好买下。也就是从n个数中取若干个数相加等于m。要求最终的答案字典序越小越好。解题思路:这题我是用01背包+记录路径的方法,之前写得少,所以写了很久。首先我用二维数组pre[][]求01背包,这样每一步的状态都能记录下来。注意: 在这里我建议pre数组用来记录当前选取了哪个硬币,之前我记录的是当前的状态,但...原创 2019-09-03 20:48:10 · 205 阅读 · 0 评论 -
PAT甲级 1019 General Palindromic Number (20 分)
题目:戳这里题意:给数字n和基数b,求n在b进制下是否回文。解题思路:暴力。代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1e4 + 10;const int maxe = 1e2+10;const int inf = 0x3f3f3f3f;typedef long long ll;i...原创 2019-09-04 19:51:46 · 129 阅读 · 0 评论 -
PAT甲级 1008 Elevator (20 分)
题目:戳这里题意:模拟电梯,电梯起始点在0层,上一层需要6s,下一层需要4s,总共有n次stop,每次stop停留5s。解题思路:模拟。代码:#include <iostream>#include<cstring>using namespace std;const int maxn=10000+10;int nu[maxn];int main() { i...原创 2019-08-21 16:54:22 · 126 阅读 · 0 评论 -
PAT甲级 1007 Maximum Subsequence Sum (25 分)
题目:戳这里题意:给k个数,求这个数的最大子串和,输出最大子串和以及该子串左右两边的数值。解题思路:1e4的长度,可以O(n^2)暴力,先记录前缀和,然后两层循环遍历子串区间(l,r],子串和为sum[r]-sum[l]。也可以用dp写,O(n)求最大子串和。dp:#include <iostream>#include<cstring>using name...原创 2019-08-21 16:44:47 · 127 阅读 · 0 评论 -
PAT甲级 1016 Phone Bills (25 分)
题目:戳这里题意:模拟通话账单记录。首先给出24个数表示每天的24小时,每个时间段通话的话费各是多少(注意,1美刀=100美分)。接着给出n个记录,每个记录的内容有通话人姓名、通话时间点,是接入时间点还是挂断时间点。求每个用户的账单。注意:每一组样例的月份都是一样的。通话记录只有 同一个人、时间相邻且接入在前挂断在后 时才有效。每个人可能在账单中有多次通话记录。解题思路:模拟。...原创 2019-08-24 17:46:05 · 164 阅读 · 0 评论 -
PAT甲级 1013 Battle Over Cities (25 分)
题目:戳这里题意:给n个城市,m条边,再给k种情况,每种情况都有一个城市与其他城市隔离,问其他城市需要加多少条边才能互相连通。解题思路:巧用vis数组,如果x城市与其他城市隔离,那么令vis[x]=1,假设该城市已经遍历过即可,接下来就是直接深搜遍历城市,需要遍历y遍,就需要加y-1条边,看起来很暴力,但其实每个点也就遍历1次而已,整体来说是O(n^2)的复杂度。代码:#include &...原创 2019-08-23 17:36:13 · 97 阅读 · 0 评论 -
PAT甲级 1002 A+B for Polynomials (25)
题目:戳这里题意:求两个多项式的和输入有两行,每一行含K N aN…,其中k表示有几个变量,n表示变量的阶,aN表示系数。需要注意的是,当系数为0时不需要输出。代码:#include <cstdio>#include <iostream>#include <cstring>#include <string>#include &l...原创 2019-08-20 14:08:50 · 123 阅读 · 0 评论 -
PAT 甲级1003 Emergency (25)
题目:戳这里题意:求从c1到c2最短路径的条数,以及路径最短情况下能找到的最大帮手数。解题思路:我是用dijkstra,当路径更新的同时更新经过该点的次数、到该点为止的帮手数。当路径不更新的时候,就直接把到v点的所有cnt[u]加到cnt[v]上面,同时比较下帮手数是否需要更新。这题的难点应该在于如何计算路径条数,其实就是多一个数组,用来记录每个点会经过几次,到达一个点了,就把之前所有点...原创 2019-08-20 14:58:03 · 107 阅读 · 0 评论 -
PAT甲级 1004 Counting Leaves (30 分)
题目:戳这里题意:给一棵树,有n个点,m个非叶子节点,求书上每一层有多少个叶子节点。解题思路:dfs或bfs进行搜索,用rk记录每个点在哪一层,cnt记录每一层有多少叶子节点。注意一个特殊样例:input:1 0output1代码如下:#include <cstdio>#include <iostream>#include <cstring>...原创 2019-08-20 16:14:16 · 87 阅读 · 0 评论 -
PAT甲级 1014 Waiting in Line (30 分)
题目: 戳这里题意:k个人去银行取钱,有n个窗口,每个窗口黄线以内可以站m个人。黄线以外的人看那个窗口人少就去哪个办理业务,如果有几个窗口人一样少,就去窗口号小的那个排队。输出每个人办理完业务的时间。需要注意一点,如果17点以前(不包括17点整),这个人还没有在窗口前办理业务,那就输出sorry。因为这点我没理解清楚所以写了好久解题思路:模拟。代码有注释:#include <iost...原创 2019-08-24 12:45:38 · 120 阅读 · 0 评论 -
PAT甲级 1015 Reversible Primes (20 分)
题目:戳这里题意:给一个数的十进制值n和这个数的进制d,求该数转化为d进制后的reverse和该数本身是否都是质数。解题思路:感觉这题题意没讲清楚,我对着样例猜的题意。知道题意就简单了,对着题意直接写即可。代码:#include <iostream>#include <cstring>#include <algorithm>#include <...原创 2019-08-24 14:50:57 · 162 阅读 · 0 评论 -
PAT甲级 1005 Spell It Right (20 分)
题目链接:戳这里题意:输入一个数x,设该数每位之和为y。把y上面的每位数字用英语输出。解题思路:模拟。代码如下:#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <map>#include <stack...原创 2019-08-20 16:52:27 · 133 阅读 · 0 评论 -
PAT甲级 1006 Sign In and Sign Out (25分)
题目:戳这里题意:给m个人的id,签到时间和签退时间,求当天开门和关门之人的id。解题思路:模拟。代码如下:#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <map>#include <stack>...原创 2019-08-20 17:09:53 · 131 阅读 · 0 评论 -
PAT甲级 1020 Tree Traversals (25 分)
题目: 戳这里题意:已知后序、中序遍历,求层序遍历。解题思路:需要抓住后序、中序的遍历顺序。后序:左右根,则根一直在最后面。中序:左根右,则根的左边为左子树,右边为右子树。通过后序遍历锁定根的位置;在中序遍历中找到根,则其左边的为左子树,右边的为右子树,于是我们得到了左右子树的长度;在后序遍历中,根的左边就是右子树的根,整个长度减去右子树的长度和跟,就是左子树,且左子树的根在最右边...原创 2019-09-04 20:58:29 · 162 阅读 · 0 评论