PAT
3stone_
别想了,动手吧
展开
-
【ACM】- PAT.A1105 Spiral Matrix 【模拟】
题目链接题目分析简单的模拟题目解题思路1、遍历1-sqrt(N),得到最接近的m, n(m > n)2、顺时针旋转:寻找规律,每次到达边界其实转向是确定的,记录当前的运行方向,并在边界时改变走向即可注意点二维数组的初始化,一开始想节省点时间,写成fill(vis[0], vis[0]+(N+1)*(n+1), false)实际并不会严格给要用到的小矩阵赋值,会一行一行往下...原创 2018-09-20 20:43:31 · 173 阅读 · 0 评论 -
【ACM】- PAT. A1072 Gas Station 【图 - 最短路径】
题目链接题目分析给出M个加油站待选点和N个房屋,要求加油站距离最近的房子越远越好;(即最小距离中最大的那个) 当有相同解时,选择平均距离更小的那一个,若还有多解,选择编号更小的那一个民房编号 1~N(1000); 气站编号G1~GM(10);解题思路对于所有候选站点,依次执行如下步骤: Dijkstra()算法查找最短路径,只需记录到每个结点的最短距离即可,不需要保存路径;...原创 2018-08-26 15:01:40 · 416 阅读 · 0 评论 -
【ACM】- PAT. 1018 Public Bike Management 【图 - 最短路径】
题目链接题目分析给出结点信息,输出最短路径; 总站编号为0,其他站点编号为1-N多条最短路径时,其他标尺: 在最短路径过程中,必须把每个结点的权值调整到题目要求的最佳;标尺一:选择需要从总站带出最少量的路径标尺二:仍有多条,则选择需要带回最少量的路径【陷阱】:不能在返程过程中才调整结点,去的时候就需要调整好数量,否则两个测试点错误(25`)解题思路用Dijk...原创 2018-08-26 10:52:38 · 206 阅读 · 0 评论 -
【ACM】- PAT. A1066 Root of AVL Tree 【AVL】
题目链接题目分析给出一个序列,输出由它构造出的AVL树的根结点值解题思路就是 AVL树 的构造过程而已,很简单!AC程序(C++)/***********************************@ID: 3stone*@ACM: PAT.A1066 Root of AVL Tree*@Time: 18/8/16*@IDE: VSCode 20...原创 2018-08-16 16:54:14 · 188 阅读 · 0 评论 -
【ACM】- PAT.A1098 Insertion or Heap Sort
题目链接题目分析1、给出一段序列,判断是插入排序还是堆排序的中间结果,并输出下一步 2、题目保证结果唯一 3、初始队列不进行比对解题思路模拟每种排序的过程,在每一步操作后进行比对 1、判断时先走堆排序(更快),这样节省时间 2、插入排序中实际每一步的操作可以使用现成的sort()算法时间复杂度:每走一步次都比对一遍? 结点上限100,双重循环到10000数量级?...原创 2018-08-16 14:35:09 · 162 阅读 · 0 评论 -
【ACM】- PAT. A1064 Complete Binary Serach Tree 【BST】
题目链接题目分析输入一组整数(不等),要求构造一棵树,满足同时为BST和完全二叉树 之后输出层序遍历序列解题思路思路一:利用BST中序遍历为递增序列思路二:利用完全二叉树的性质切分序列思路一 (简单)1、开一个数组CBT[]用来存储完全二叉树; 2、将输入的数值递增排序; 3、对CBT[]表示的二叉树进行中序遍历,并在遍历过程中将数字从小到大填入数组; ...原创 2018-08-18 21:13:43 · 228 阅读 · 0 评论 -
【ACM】- PAT. A1053 Path of Equal Weight 【树的遍历】
题目链接题目分析给出特定值S,查找(根结点到所有叶结点的权重和 = S ) 的所有路径 1、根节点编号:0 2、输出:满足条件的weight序列,降序,解题思路1、建树(静态存储); 2、先根遍历,用vector<int>保存路径 (注意递归返回时弹出加入的那个结点); 3、vector[]数组保存多个结果,vector可以直接比较,用sort()函数排序;...原创 2018-08-18 19:44:28 · 224 阅读 · 0 评论 -
【ACM】- PAT. A1004 Counting Leaves 【树的遍历】
题目链接题目分析输出一棵树每层的叶节点个数 注:rootId = 1;结点上限100;解题思路1、建树(今天存储) 2、(法一)层序遍历(BFS) 层号稍微麻烦一点,两种处理思路 (1)标记每层最后一个结点,从而找到换层的时间点 (2)开一个数组,专门记录每个结点的深度 3、(法二)先序遍历(DFS)AC程序(C++)...原创 2018-08-18 17:32:34 · 166 阅读 · 0 评论 -
【ACM】- PAT.A1094 The Largest Generation【树的遍历】
题目链接题目分析查找树中结点最多的是哪一层;解题思路1、树的结点没有信息,故用 静态存储 的简化形式vecrot<int>[]; 2、先序遍历(DFS)层序遍历(BFS)都行;开一个数组level[]记录每层的结点数,最后遍历查找最大层即可。静态存储 版本/***************************@Author: 3stone*@AC...原创 2018-08-18 16:26:24 · 199 阅读 · 0 评论 -
【ACM】- PAT. A1079 Total Sales of Supply Chain【树的遍历】
题目链接题目分析1、用树来表示商品分销,每个结点代表一个人,计算最后的收益,即叶节点的值; 2、每增加一层,加价r%; 3、结点编号0 ~ N-1 ,根节点为0;上限10^5;结果保留1位小数;解题思路1、树的 静态存储 ,边输入边建树; 2、先序遍历,记录当前结点深度,到达叶结点时累加即可;AC程序(C++)/**************************...原创 2018-08-18 16:03:53 · 257 阅读 · 0 评论 -
【ACM】- PAT. A1090 Highest Price in Supply Chain 【树的遍历】
题目链接题目分析1、用树来表示商品分销,每个结点代表一个人,计算最高出售价,即叶节点的最大权值 2、每增加一层,加价r% 3、结点编号0 ~ N-1;上限10^5;结果保留2位小数 4、输入是每个结点的父节点,根节点的父节点为-1解题思路1、由于只需记录结点关系,结点自身不带信息,直接用树的 静态存储 的简化形式vector&lt;int&gt;[]即可 2、要计算最高...原创 2018-08-18 15:57:04 · 137 阅读 · 0 评论 -
【ACM】- PAT. A1106 Lowest Price in Supply Chain 【树的遍历】
题目链接题目分析1、用树来表示商品分销,每个结点代表一个人,计算最后的收益,即叶节点的值 2、每增加一层,加价r% 3、结点编号0 ~ N-1 ,根节点为0;上限10^5;结果保留1位小数解题思路1、树的静态存储(结点无权值 - 简化形式),边输入边建树 2、先序遍历,记录当前结点深度,到达叶结点时判断、更新AC程序(C++)/************...原创 2018-08-18 15:53:03 · 180 阅读 · 0 评论 -
【ACM】- PAT.A1021 Deepest Root【图的遍历】
题目链接题目分析1、判断图是否为一棵树,是则输出最深根,不是则输出连通块数 2、节点编号1-N 3、无向图解题思路1、DFS判断 是否为一棵树 2、寻找最大根: (法一)暴力搜索 结点数10000,则两重循环复杂度会达到10^8量级, 时间限制为1500ms,1s内计算次数一般为10^7-10^8, 提交发现,最大测试点花了将近1100...原创 2018-08-13 10:50:22 · 353 阅读 · 1 评论 -
【ACM】- PAT. A1013 Battle Over Cities 【图的遍历】
题目链接题目分析1、无向图 2、节点编号1-N 3、删去一个结点,查看变成几个连通块解题思路每次删除删遍历,看剩余接个连通块(DFS的次数)AC程序(C++)/***********************************@Author: 3stone*@ACM: PAT.A1013 Battle Over Cities*@Time: 18/8/1...原创 2018-08-12 21:21:33 · 256 阅读 · 0 评论 -
【ACM】- PAT. A1076 Forwards on Weibo【图的遍历】
题目链接题目分析1、L即表示最多传递L层 2、所给指向关系是反的,即所给结点号为其父节点 3、结点编号 1-N解题思路使用BFS遍历,遍历时记录每个结点的层数注:不能用DFS,会遗漏某些可以更快到达的路径;AC程序(C++)/***********************************@Author: 3stone*@ACM: PAT.A107...原创 2018-08-12 16:04:48 · 171 阅读 · 0 评论 -
【ACM】- PAT. A1087All Roads Lead to Rome 【图 - 最短路径】
题目链接题目分析给出无向图,边和结点都有权重,查找最短路径; 当最短路径有多条时,选择结点权重总和最大的那条,若还有多条,选择平均结点权重最大的一条路径;解题思路使用Dijkstra()算法 查找最短路径; 本题满足最优子结构,故对于多条最短路径,可以在查找过程中就判断那条最佳(判断稍复杂), 也可以保存所有路径,最后筛选!注意点: 结点是以三位大写字母组成的名字给...原创 2018-08-26 15:41:34 · 313 阅读 · 0 评论 -
【ACM】- PAT.A1008 Elevator 【水题】
题目链接/***********************************@ID: 3stone*@ACM: PAT.A1008 Elevator*@Time: 18/8/26*@IDE: VSCode 2018 + clang++***********************************/#include<cstdio>using names...原创 2018-08-26 19:29:03 · 205 阅读 · 0 评论 -
【ACM】- PAT.A1036 Boys vs Girls 【水题】
题目链接题目分析(略)解题思路(略)AC程序(C++)/***********************************@ID: 3stone*@ACM: PAT.A1036 Boys vs Girls *@Time: 18/9/20*@IDE: VScode 2018 + clang++ ***********************************/#i...原创 2018-09-20 16:47:20 · 181 阅读 · 0 评论 -
【ACM】- PAT. A1104 & B1049 Sum of Number Segments 【数学问题 - 找规律】
题目链接题目分析给出一段序列,求出所有子序列的数值和!解题思路:寻找规律在序列下方用横线画出所有集合,就能很明显看出规律; 第i个数,出现(N - i + 1)次,共出现i组!AC程序(C++)/***********************************@ID: 3stone*@ACM: PAT.A1104 Sum of Number Segm...原创 2018-09-04 14:52:59 · 164 阅读 · 0 评论 -
【ACM】- PAT. A1049 Counting Ones 【数学问题 - 找规律】
题目链接题目分析给出一个数N,求从0到N的所有数中含有多少个1解题思路(摘自《算法笔记》)寻找数学规律:若当前位为0:左侧数值 * 10^右侧位数;若当前位为1:左侧数值 * 10^右侧位数 + 右侧数值 + 1;若当前位为其他数字:(左侧数值+1) * 10^右侧位数;感悟: 如果对题目没有明确思路,可以举几个简答例子找下规律,再推广至一般情况。A...原创 2018-09-04 14:39:27 · 260 阅读 · 0 评论 -
【ACM】- PAT. A1030 Travel Plan 【图 - 最短路径】
题目链接题目分析:结点编号 0 ~ N-1 题目满足最优子结构,可以直接得出最佳最短路径,也可以先保存所有最短路径,最后统一筛选!思路一:直接在遍历Dijkstra()过程中选出最佳最短路径/***********************************@ID: 3stone*@ACM: PAT.A1030 Travle Plan*@Time: 18/8...原创 2018-08-25 18:24:02 · 340 阅读 · 0 评论 -
【ACM】- PAT. A1003 Emergency 【图 - 最短路径】
题目链接题目分析:输入结点信息,求最短路径;路径多条时,根据点的权重,输出路径中点的累加权重最大的那条解题思路:在原有Dijkstra()算法的基础上,新增数组w[],记录从起点到某点的累计点权, 当路径长度相同时,更新为权重更大的即可/***********************************@ID: 3stone*@ACM: PAT.A1003 Emerg...原创 2018-08-25 16:57:17 · 1003 阅读 · 1 评论 -
【ACM】- PAT. A1034 Head of a Gang 【图的遍历】
题目链接题目分析寻找图中满足条件的连通块数; 1、无向图,需要多次累加权值 2、Gang: 结点数大于2 且 总时长 > K 3、head: Gang中时长最大的结点 4、题目保证每个Gang中head唯一 5、输出按head字典序排序 6、通话记录上限为1000,则结点数上限为2000(因此最好用邻接表实现)解题思路1、结点名字:map<string,...原创 2018-08-25 14:49:42 · 200 阅读 · 0 评论 -
【ACM】- PAT. A1059 Prime Factor 【数学问题 - 质因子分解】
题目链接题目分析(略)解题思路:质因子分解AC程序(C++)/***********************************@ID: 3stone*@ACM: PAT.A059 Prime Factor*@Time: 18/8/28*@IDE: VSCode + clang++**********************************...原创 2018-08-29 20:32:46 · 420 阅读 · 0 评论 -
【ACM】- PAT. A1096 Consecutive Factors 【水题】
题目链接题目分析(略)解题思路暴力搜索即可! AC程序(C++)/***********************************@ID: 3stone*@ACM: PAT.A096 Consecutive Factors*@Time: 18/8/28*@IDE: VSCode + clang++***************************...原创 2018-08-29 19:45:00 · 154 阅读 · 0 评论 -
【ACM】- PAT. A1078 Hasing 【散列表 - 平方探测】
题目链接题目分析散列表的插入;冲突处理方法:单向平方探测法!! 注意:探测边界 step在[0, M)范围内查找即可(循环节是M)(M为散列表的最大值)AC程序(C++)/***********************************@ID: 3stone*@ACM: PAT.A1078 Hasing *@Time: 18/8/27*@IDE: ...原创 2018-08-29 16:06:06 · 212 阅读 · 0 评论 -
【ACM】- PAT. A1015 Reversible Primes 【数学问题 - 素数相关】
题目分析判断一个数和它在某个进制下翻转后的数是否都为素数!解题思路(略)AC程序(C++)/***********************************@ID: 3stone*@ACM: PAT.A015 Reversible Primes*@Time: 18/8/27*@IDE: DEV C++ 5.10 *********************...原创 2018-08-29 15:49:54 · 187 阅读 · 0 评论 -
【ACM】- PAT. 1008 数组循环右移 【数学问题】
题目链接解题思路《数学之美》 把前后两端分别反转,之后再整体反转一遍即可!/***********************************@ID: 3stone*@ACM: PAT.B1008 数组循环右移*@Time: 17/2/27*@IDE: DEV C++ 5.10 ***********************************/#includ...原创 2018-08-27 19:38:10 · 168 阅读 · 0 评论 -
【ACM】- PAT. A1043 Is It a Binary Search Tree 【BST】
题目链接题目分析给出一个序列,判断是否为BST树的先序遍历序列解题思路1、按照所给序列构造BST树; 2、先序遍历这棵树,得到的序列与所给序列相同则说明是,否则不是 注:用vector保存序列,这样比较时比较方便,不然还要写循环;AC程序(C++)/***********************************@ID: 3stone*@ACM: ...原创 2018-08-17 10:02:34 · 150 阅读 · 0 评论 -
【ACM】- PAT.A1069 & PAT. B1019 The Black Hole of Numbers 【水题】
题目链接解题思路:用到了sprintf()函数,把n 以%d 的格式写到str 字符数组中 AC程序(C++)/***********************************@ID: 3stone*@ACM: PAT.A1069 The Black Hole of Numbers*@Time: 18/8/26*@IDE: VSCode 2018 + clan...原创 2018-08-26 20:52:07 · 143 阅读 · 0 评论 -
【ACM】PAT. A1102 Invert a Binary Tree 【二叉树】
题目链接题目分析输入顺序即为结点下标,输入内容为结点的左右子树下标解题思路1、保存输入结点信息 2、找到根结点 3、构造出二叉树 4、不用再invert,遍历时反转顺序即可!AC程序(C++)/***************************@Author: 3stone*@ACM: PAT.A1102 Invert a Binary Tree ...原创 2018-07-26 23:47:33 · 417 阅读 · 0 评论 -
【ACM】PAT. A1086 Tree Traversals Again【二叉树遍历】
题目链接题目分析Push 表示 前序队列 Pop 表示 中序队列 输出:后序遍历序列解题思路用前序 + 后序 构造二叉树,再遍历输出后序队列AC程序(C++)/***************************@Author: 3stone*@ACM: PAT.A1086 Tree Traversals Again *@Time: 18/7/26...原创 2018-07-26 22:17:52 · 237 阅读 · 0 评论 -
【ACM】PAT. B1023 组最小个数 【水题】
题目链接解题思路(略)/**************************//@Author: 3stone //@ACM: PAT-B1023//@Time: 18/3/22//@IDE: VS2017//@Key: It`s no use crying over spilt milk!***************************/#include<...原创 2018-07-26 15:18:59 · 207 阅读 · 0 评论 -
【ACM】PAT. A1012.The Best Rank 【排序】
思路: 1、用结构体数组保存输入数据 2、分别按4个指标排序,并在过程中记录最佳名次和科目 3、把结构体数组元素加入map,ID作为键值,这样便于查询,不然要遍历数组/**************************//@Author: 3stone//@ACM: PAT-A1012.The Best Rank//@Time: 18/1/27//@IDE: VS2017**原创 2018-01-27 11:00:36 · 352 阅读 · 0 评论 -
数值溢出 PAT. A1065
题目: https://www.patest.cn/contests/pat-a-practise/1065如果用大数运算会麻烦许多吧!关于数值范围 题目中的范围为[-2^63, 2^63],应该是给错了,改为[-2^63, 2^63);不然long long存储2^63会自动变成-2^63,这时候只能用带负数的大数运算了。测试数据确实也没有A或B等于2^63的情况。#inc转载 2018-01-19 10:29:43 · 238 阅读 · 0 评论 -
【ACM】PAT.A1051 Pop Sequence 【栈 水题】
判断一个序列是否是某个栈的弹出顺序的步骤是: (1)若下一个要弹出的数字刚好在栈顶,则弹出该数字; (2)若下一个要弹出的数不在栈顶,则不断压入数据直到压入要弹出的数据; (3)若所有的数据都已压入栈内,但是下一个要弹出的数字不在栈顶, 则该序列不可能是该栈的一个弹出序列/**************************//@Author: 3stone//@ACM:原创 2018-02-02 23:55:48 · 261 阅读 · 0 评论 -
【ACM】PAT.A1091 Acute Stroke【搜索】
题目:https://www.patest.cn/contests/pat-a-practise/1091题目本身不难,类似于非连通图的BFS()标准遍历代码,从每一点向六个方向扩展即可。/**************************//@Author: 3stone//@ACM: PAT-A1091 //@Time: 18/2/2//@IDE: VS2017**原创 2017-02-24 23:18:31 · 344 阅读 · 0 评论 -
【ACM】PAT.A1103 Integer Factorization【搜索】
题意: K个数 的 P次方之和 = N N <= 400, K <= N, 1 < P <= 7 多方案时选择基数和最大的,基数和也相同时按字典序选择最靠前的思路: 1、由于p确定,可以提前确定P次幂小于N 的数,用数组fac[] 保存起来 2、每次DFS()确定是否加 fac[i],形成两个分支 3、需要传的参数有: cur: 从N递减遍历求幂次和,保原创 2017-02-23 19:43:09 · 218 阅读 · 0 评论 -
PAT-A1082.Read Number in Chinese 【字符串处理】
思路:# 分 亿位、中间4位、低4位 这三块来分别讨论# 需要很细心地考虑到很多种情况,//输出过程中很容易多输出空格,但不易察觉,可以先用 * 代替空格输出,可以很快发现错误,待程序正确后再改回来# 程序结尾 附有 供测试的数据/***************************************//@Author: 3stone//@ACM: PAT-A108原创 2018-01-26 15:07:28 · 318 阅读 · 0 评论 -
【ACM】PAT. A1100 Mars Numbers【STL】
思路: 1、使用getline(cin, str) 读入一行时,注意不要读入换行符哪! 2、map【string, int】 中string可以带空格/**********************3stone*****************************Problem: PAT.A1100.火星数字(20)Author:3stoneTime:2017/3/5******原创 2017-03-05 11:45:54 · 266 阅读 · 0 评论