PTA刷题-甲级
PTA甲级刷题
abyss_miracle
这个作者很懒,什么都没留下…
展开
-
【PTA刷题】甲级 拓扑排序+多源Dijkstra
题源:7-4 Professional Ability Test (30point(s))大意:给一个图,有两个权重dis和value。前一个权重越小越好,后一个越大越好。节点之间有前置关系(拓扑排序),最后一行给出查询的点,问每次查询的最短路径(Dijkstra)。输入样例:/*Each input file contains one test case. For each case, the first line gives two positive integers N (≤1000) an原创 2020-12-04 11:57:27 · 490 阅读 · 0 评论 -
【PTA刷题】前缀和算法(快速求连续区间和)
2020甲级秋季考试:How Many Ways to Buy a Piece of Land**前缀和用法:用来快速算出某个数列的连续子列的和。 **输入:给你N个数和一个阈值K;每次只能选中相邻的一块数字,且这块区域的和不能大于阈值。问你有多少种旋转方法。5 8538 42 15 24 9输出:11/*输出解析:38421524938 4242 1542 15 2415 2415 24 924 9*/代码参考:https://www.acwing.c原创 2020-12-03 21:16:45 · 409 阅读 · 0 评论 -
【PTA刷题】甲级 拓扑排序
拓扑排序以前不考,现在考的频率好高。其实没啥难的,抓住一点:入度为0时,才能被输出(或者被选中,一个意思)。所以要用个int inDegree来维护入度的数量。 当要我们判断一个图能不能是拓扑排序(即没有环),就是看入过队列的节点数是不是就是N。例题:判断能不能对某个图做拓扑排序https://pintia.cn/problem-sets/15/problems/861大意:给你一个图,让你判断能不能拓扑排序。输入数据:输入说明:输入第一行给出子任务数N(≤100),子任务按1~N编号。随后N原创 2020-12-03 20:36:05 · 326 阅读 · 0 评论 -
【PTA刷题】链表题套路
PTA的链表其实和力扣的挺不一样的,PTA的其实都是用数组来模拟的,而且往往并不限制新开一个数组。出题模式比较固定。因此固定套路是把链表问题变成数组问题来做:1.开一个装有结构体Node的固定数组,脚标为地址,模拟指针用。2.从start给的地址开始遍历链表,把链表按顺序放入一个vector中。3.根据给的条件来变换数组。将结果保存在ans数组中,最后打印出来。1165.19冬季第二题大意:Given a singly linked list L. Let us consider every K原创 2020-12-01 03:55:59 · 478 阅读 · 0 评论 -
【PTA刷题】甲级 最大邻居交际圈 (1142,1166)
近几年这个题还挺高频的。这种题目核心就是一个个把不在当前集合(用vector装着)的点,尝试能不能加入集合中。(如果和目前图中的点都互相之间有通路,就说明这个点是可以新加入的)。可以用viewed来标记集合中的节点。所以整体流程如下:1.用G矩阵来存储通路情况。2.遍历当前输入的vector中的元素(如访问了 3,4,5,6),用viewed维护访问过的节点。3.判断,如果vector内部都有不连通的,说明这个集合就在瞎搞,直接return出去。3.如果一切正常,进行下一步判断,遍历所有节...原创 2020-11-30 22:42:41 · 104 阅读 · 0 评论 -
PTA甲级最短路径 Dijkstra + DFS模板题
甲级1111题,除了繁琐没啥难度,常规模板题dijkstra的时候维护一个prev前置节点数组,然后用DFS去遍历这个prev,从图中出发的终点开始,起点结束。#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <algorithm>#include <vector>#include <stdio.h>using namespace std;const int maxnum =原创 2020-11-28 11:26:56 · 274 阅读 · 0 评论 -
【PTA刷题】甲级 哈希散列
之前概念理解有偏差。 哈希散列是根据pos = (x + j * j) % TableSize来算位置的。(这里就不写错误的方法了,免得记错)。注意是原始大小,加上平方探测,对表大小(一般是个Prime)取余。 那么,如果一直有占用,啥时候停止呢? 在j < TableSize范围内一直进行。查询的时候则略有不同,如果一直有占用,就在j <= TableSize的时候都运行。(比插入的时候多查询一次)【甲级】1145 Hashing – Average Search Time (25)原创 2020-11-19 16:55:56 · 108 阅读 · 0 评论 -
【PTA刷题】甲级 重载运算符
甲级1129.大意:给你一个网页上的货物编号,客户每次点击一次,要输入之前他访问过的最多的K个商品。难点:一开始想着用双map搞半天没搞出来。后来看了题解发现一个重载和set的配合使用就可以简单的解决这题。#include <iostream>#include <vector>#include <algorithm>#include <queue>#include <unordered_map>#include <map>原创 2020-11-13 15:38:36 · 89 阅读 · 0 评论 -
PAT甲级 贪心 1033
1033. To Fill or Not to Fill (25) [贪心算法]柳神题解:贪⼼心思想:0.寻找⽐比⾃自⼰己距离远的,到能够到达的⼤大距离之间的加油站,看他们的油价。如果找到了了更更低价格 的油价,就加油到刚好能到达那个加油站的距离的油,然后去那个更更低价格的加油站(有更更低的我⼀一 分都不不想多花在别的距离上,只加到刚好满⾜足更更低价格的加油站的距离就⾏行行,那样以后的路路程我就可 以以更更低的价格⾏行行驶啦)1.如果找不不到更更低的,就找尽可能低的油价的加油站,在当前加油站加满油之原创 2020-10-15 00:24:43 · 242 阅读 · 0 评论 -
PAT甲级考试题库题目分类
PAT甲级题目分类水题 1136、1139、1143、1148字符串处理 1001、1005、1035、1061、1073、1077、1082、1108、1140、1152模拟 1002、1009、1017、1026、1042、1046、1065、1105查找元素 1006、1011、1036动态规划 1007、1040、1045、1068二分法 1010、1044、1085双指针 1029原创 2020-10-07 20:12:58 · 1631 阅读 · 0 评论 -
【PTA刷题】甲级 图
图的遍历1034 Head of a Gang 用时:70min大意:给了N行通信(所以最多有两千个人->也就是节点),某几个人之间会形成社交网络。让你找出社交圈。社交圈是有条件的,比如边的权值要大于某个给定的K值。此外,社交圈的人数一定要大于两人。最后输出节点权值(该节点所有的边的权值之和)作为leader。还要输出这个社群的人数。需要注意的事情:1.社群中形成回路要如何遍历呢? 使用遍历过后马上删除这条边的方法2.递归调用dfs之前,要先判断该节点是否被访问过。3.翻译str和in原创 2020-09-23 14:36:42 · 388 阅读 · 0 评论 -
【PTA刷题】甲级 并查集,堆,哈夫曼
并查集并查集就是把节点放在数组List里面,初始化让List里面的每个位置都等于该位置角标。之后填入数据(用Union),Union就是先找根,如果根不一样,就把aRoot并到bRoot底下。完成填入操作后,如果List里面的某个i还是角标本身,就说明这个点是根节点。PTA 1107 Social Clusters大意是给了N个人,每个人有一些爱好,如果有相同爱好就是好朋友。这样的话就会形成一个好朋友社交圈。为你最后有几个这样的大圈。解:用一个course数组储存爱好,一开始都是0,当第一次出现某原创 2020-09-16 21:28:42 · 140 阅读 · 0 评论 -
【PTA刷题】甲级 二叉搜索树与平衡树
搜索树基本增改查删核心是查,增就是在最后root ==NULL的地方加入新的节点。删相对复杂一点点,涉及到前驱后续的问题。前驱(左子树的最大值替代当前root)即,所有小的里面找个最大的。后序(右子树的最小值替代当前root),即所有大的里面找一个最小的。如Leetcode 450. 删除二叉搜索树中的节点class Solution {public: TreeNode* findMax(TreeNode* root) //找前驱,以root为根的最大节点 { while (root->原创 2020-08-29 20:44:38 · 200 阅读 · 0 评论 -
【PTA刷题】甲级 树的遍历
前中后三种遍历的递归写法比较简单。主要学习迭代写法。来自leedcode 94.中序递归:class Solution {public: vector<int> res; void inorder(TreeNode* root) { if(root == NULL) return; inorder(root->left); res.push_back(root->val);原创 2020-07-29 04:11:21 · 455 阅读 · 0 评论