![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT ADVANCE
我的需求呢
何许浅碧深红色 自是花中第一流
展开
-
PAT 甲级 1046 Shortest Distance (20 分)
题目 分析 就是有个环路 判断两点间最短距离 一开始想用二维数组 发现根本跑步起来 后来直接判断两点两个方向的距离 正向和负向 负向用总长度减去正向就好 代码 #include "iostream" #include "cmath" using namespace std; int main() { int num; cin >> num; int sum[100010]; int total =原创 2021-08-02 17:12:07 · 62 阅读 · 0 评论 -
PAT 甲级 1143 Lowest Common Ancestor (30 分)
题目 题目跳转 1143 Lowest Common Ancestor (30 分) 分析 看到这道题首先想到的是构建好一颗BST然后查找两个节点的路径从尾部进行遍历找到第一个相同节点就是公共的最小节点。但是有一个点始终是超时的过不去。后来找了资料换了种思路,寻找两个点范围内的点[u,v]范围内,就是最小公共节点。 code #include <iostream> #include <stdio.h> #include <map> using namespace std原创 2021-02-16 14:26:29 · 146 阅读 · 0 评论 -
PAT 甲级 1155 Heap Paths (30 分)
题目 题目跳转 1155 Heap Paths (30 分) 分析 题目大意是判断给定的层级遍历的二叉树是不是堆,是的话是最大堆还是最小堆。这里看完了算法笔记上对堆的分析,有一个要点,就是可以用数组表示堆 用n*2表示左节点2n+1表示右节点。然后就根据定义写30分就到手了。 code #include <stdio.h> #include <iostream> #include <vector> using namespace std; const int M = 1原创 2021-02-15 12:56:25 · 123 阅读 · 0 评论 -
PAT 甲级 1139 First Contact (30 分)
题目 题目跳转 1130 First Contact (30 分) 分析 这个题目有不少的细节,大意是两个人相爱的人通过自己的同性朋友来发送爱意,两个中间者必须也是朋友,然后输出这两个中间人的id。 需要对同性朋友的判断,这里又因为ID可能是+0000或者-0000读取的话可能都是0判断不出来,可以用他们的长度来比较下相同就算是同性。 结果的两个中间人需要按照主动示爱的人的性别放在前面,这里可能两个都是男的或者女的…那就别管了把前者的朋友放前面就好了。 之前想着用"id:id"作为string存储关系,原创 2021-02-12 20:00:38 · 285 阅读 · 1 评论 -
PAT 甲级 1014 Waiting in Line (30 分)
题目 分析 题目的大意就是模拟银行排队办理业务的场景。 有几个注意点 用户在17点前已经在办理业务了,就算已经到17点也继续办下去 客户每次都是选择最短的队列 之前选择了从0开始第一个队列 总有一个点过不去 封装了一些方法 代码搞得很冗长了。。 Code #include <stdio.h> #include <iostream> #include <vector> #include <queue> using namespace std; struc原创 2021-02-10 16:35:41 · 80 阅读 · 0 评论 -
PAT 甲级 1013 Battle Over Cities (25 分)
直接跳跃到了1013 因为前面的没有啥问题就过了 题目 分析 这是一道用来图的题目,初步就是使用BFS查找在删除了一个节点后剩下的 整块数num 需要连接线的最少值就是 num-1; Code #include <stdio.h> #include <iostream> #include <map> #include <vector> #include <algorithm> #include <queue> using namesp原创 2021-02-10 13:14:03 · 71 阅读 · 0 评论 -
PAT甲级 1004 Counting Leaves (30 分)
题目 分析 想着试试 最近用的BFS算法 加上队列 然后就ac了 代码有待优化 但看了下结果感觉还挺快的 code #include <stdio.h> #include <iostream> #include <vector> #include <queue> using namespace std; struct Node { int sun; int lnum; vector<int> leafs; } nodes[原创 2021-02-08 19:56:14 · 86 阅读 · 0 评论 -
PAT甲级 1003 Emergency (25 分)
题目 思路 没有用网上其他人写的dijkstra方法 采用了 dfs 算法 code #include <stdio.h> #include <iostream> #include <math.h> using namespace std; // 每个城市对应物资 城市之间举例矩阵 int goods[501], len[600][600] = {-1}; // 城市数 道路数 当前位置 救援位置 最小路径数 最大补给数 最小长度 int cityn,roadn,cur原创 2021-02-08 15:30:14 · 111 阅读 · 0 评论 -
PAT甲级 1002 A+B for Polynomials
code #include <stdio.h> #include <iostream> using namespace std; int main() { double wei[1001] = {0}; int time = 0; for(int f=0;f<2;f++){ int n; cin >> n; for (int i = 0; i < n; i++) {原创 2021-02-07 20:59:36 · 75 阅读 · 0 评论