
PAT
KLFTESPACE
这个作者很懒,什么都没留下…
展开
-
1101 Quick Sort (25分)
1.pivot的左边< 右边>2.左边最大值<=pivot 右边最小值> pivot即可 一次遍历存储每个i左边最大值,右边最小值即可完成3.我想模拟一遍 所以没有采用2的方法 然后 TLE一部分模拟思路:1.一次就好 无需递归2.注意ki为区分点 和之前快排模板里的low high区分开,即判定条件适当改变3.加flag标记是否交换 交换则说明不是pivot位置#include <bits/stdc++.h>usin...原创 2020-07-18 23:27:25 · 179 阅读 · 0 评论 -
1089 Insert or Merge (25分) && 1098 Insertion or Heap Sort
1.推荐使用vector<int> 传引用数组不用给定大小范围....我用的int数组,麻烦还有限制,但是目前懒得改2.引用这个还挺好用的3.插入排序的话 前面有序,后面和原数组内容一致 我只是模拟了下插入第i个元素的最终排序 没有实现从头到尾排序的4.归并排序注意是二路归并 直接二分往下模拟会有问题代码注释中有说明 直接sort 2的i次方的跨度往后排序 但是我没写这个5.堆排序 最终求从小到大排序需要建立大根堆 然后逐步调整6.由于这两个个一样 所以两个题合并...原创 2020-07-18 22:42:26 · 169 阅读 · 0 评论 -
1152 Google Recruitment (20分)
//求素数1.从给定字符串截取m位长的2.stoi转int型3.判断是否为素数//素数打表法 一个答案有段错误 ,是因为数据会大于1000000,对于大于N的直接计算也可通过#include<bits/stdc++.h>using namespace std;const int N = 1000000;bool prime[N];bool isPrime(int a) { if(a <=3) { return true; } int e.原创 2020-07-09 22:43:23 · 166 阅读 · 0 评论 -
1132 Cut Integer (20分)
1.直接切割 然后stoi转整型2.存在除数为0的错误#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main() { string s; int n; cin >> n...原创 2020-02-24 20:44:06 · 161 阅读 · 0 评论 -
1127 ZigZagging on a Tree (30分)
1.后序+中序 确定层次遍历2.用的是中序区间和后序区间来进行遍历(也可以用Tree Traversals (25分)中后序确定根结点+中序区间来做,因为后序区间也就可以判断根结点)3.层次遍历看样例是第一行逆序,第二行正序,,以此类推 所以用vector来存储每行的节点 在判断是奇数层还是偶数层#include<iostream>#include<vecto...原创 2020-02-24 19:10:36 · 214 阅读 · 0 评论 -
1126 Eulerian Path (25分)
在输出的不一样的方法里学到了 printf("%d%c", len, " \n"[i==n]); 输出时的空格和换行 没搜到 我理解为将空格和换行符当成string类型字符串,没到末尾即i!=n,为0 若i==n 即为1此外,这个题需要判断是否连通欧拉:欧拉通路: 通过图中每条边且只通过一次,并且经过每一顶点的通路。欧拉回路: 通过图中每条边且只通过一次,...原创 2020-02-24 14:54:31 · 194 阅读 · 0 评论 -
1123 Is It a Complete AVL Tree (30分)
1.注意左旋右旋时,最后形成的树形式2.层次遍历可用前序遍历存储实现,也可以用队列实现。3.左旋即将根节点的右孩子为新的根结点,然后原root为他孩子节点的左节点,原来孩子节点的左孩子变为原root节点的右边孩子右旋即将根节点的左孩子为新的根结点,然后原root为他孩子节点的右节点,原来孩子节点的右孩子变为原root节点的左孩子图示理解#include<iostream...原创 2020-02-23 23:21:08 · 228 阅读 · 0 评论 -
1122 Hamiltonian Cycle (25分)
哈密顿通路: 通过图中每个点且只通过一次,并且经过每一顶点的通路。哈密顿回路: 通过图中每个点且只通过一次,并且经过每一顶点的回路。#include<bits/stdc++.h>using namespace std;const int MAXN = 300+5;int G[MAXN][MAXN], N, M, K, k, v[MAXN];set<int...原创 2020-02-23 20:25:13 · 263 阅读 · 0 评论 -
1119 Pre- and Post-order Traversals (30分)
前序遍历+后序遍历 确定中序遍历(不一定唯一)用前序遍历的下一个根结点在后续遍历中查找所在位置确定子树节点个数,两个节点之间的节点数即为子树节点数,然后子树根结点是子树前序遍历起始位置。#include<bits/stdc++.h>using namespace std;const int maxn = 35;int pre[maxn], post[maxn];bo...原创 2020-02-23 19:26:43 · 262 阅读 · 0 评论 -
1115 Counting Nodes in a BST (30分)
1.建造树2.在建造的时候记录所在层的节点数3.记录所在最深层#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 1000+5;struct Node { No...原创 2020-02-22 22:06:15 · 153 阅读 · 0 评论 -
1102 Invert a Binary Tree (25分)
//转置二叉树仅需节点的左右子树互换层次遍历+中序遍历#include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;const int N =10+5;struct Node{ int l, ...原创 2020-02-22 14:17:19 · 134 阅读 · 0 评论 -
1101 Quick Sort (25分)
1.直接存储某点左右两边最大值最小值#include<bits/stdc++.h>#include<unordered_map>using namespace std;const int N = 1e5+5;#define INF 0x3f3f3f3f#define loop(x,y,z) for(x=y;x<z;x++) ...原创 2020-02-22 12:26:11 · 141 阅读 · 0 评论 -
1098 Insertion or Heap Sort (25分)
1.学习了堆排序2.在判断顺序也要考虑==....找了好久才发现...#include<iostream>#include<algorithm>#include<vector>#include<algorithm>using namespace std;vector<int> a, b;void adjustH...原创 2020-02-21 22:34:29 · 134 阅读 · 0 评论 -
1099 Build A Binary Search Tree (30分)
1.刚开始想的是构造树的时候,顺便存储每层的值,但是 有两个例子段错误2.之后就只好按构造的树来进行层次遍历3.题目理解错了,以为没告诉你两个节点的父节点,所以是一直递归,直到不能递归来构造树。#include<iostream>#include<cstdio>#include<cstring>#include<queue...原创 2020-02-21 18:24:04 · 226 阅读 · 0 评论 -
1087 All Roads Lead to Rome (30分)
1.需从最后向前存储,仅仅记录一条路径2.从前往后存储会超时,但是的确仅记录一条路径,至于为什么会超时 还没找出原因3.路径条数和该路线节点数用数组存即可 即若有更小路径,则选择更小路径,路径条数和上一节点路径条数一样,节点数+1,若路径长度相等,则该节点路径数+1,更新最大快乐值4.优先队列,注意排序规则5.如果到达终点,注意不要用终点开始遍历,不然会给后序遍历造成麻烦6....原创 2020-02-21 15:11:16 · 251 阅读 · 0 评论 -
1086 Tree Traversals Again (25分)
push的结果符合先序遍历的结果 即根左右(顺序从小到大)pop的结果符合中序遍历(左根右)1.有两种做法一,在建树的时候,直接push进根节点即可(即并不需要真正建造树,在左右子树递归完成后push进的就是符合左右根的后序遍历得结果)二,真正意义上的构造一棵树,然后后序遍历这个树2.在构造树的时候注意每个节点都需要new Node,刚开始我没注意,导致不会继续进行下去...原创 2020-02-20 17:17:11 · 181 阅读 · 0 评论 -
L2-001 紧急救援 (25分)
//在查找迪杰斯特拉 优先级做法的时候看到了优先队列优化的dijkstra不是万能的!的L2-001 紧急救援 (25分)题主要有以下错误:1.必须采用优先队列 并需要按路径大小排序(即pair需要些cmp函数才可实现)2. if (d[v] != p.first) continue;//因为每次松弛操作后,要删除堆中原有的节点,这样很不方便,所...原创 2020-02-19 18:21:31 · 505 阅读 · 0 评论 -
1064 Complete Binary Search Tree (30分)
完全二叉树中序遍历的结果是顺序的,所以只需要中序遍历,按顺序放置即可#include <iostream>#include <algorithm>using namespace std;const int N = 2000+5;int Level[N];int len=0;void lev(int a[],int x,int n){ if...原创 2020-02-18 17:45:48 · 134 阅读 · 0 评论 -
1045 Favorite Color Stripe (30分)
1.最长公共子序列#include<bits/stdc++.h>using namespace std;int main() { int n, m, l; cin >> n >> m; int a[m]; for(int i=1; i<=m; i++) { cin >> a[i]; } cin >>...原创 2020-02-18 15:34:55 · 177 阅读 · 0 评论 -
1093 Count PAT's (25分)
sp存储P的个数sa存储可组合成PA个数st存储PAT个数#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long ll;const ll MOD = 1000...原创 2020-02-16 18:09:03 · 164 阅读 · 0 评论 -
1085 Perfect Sequence (25分)
查看其它博客的方法,发现还有个distance方法distance (InputIterator first, InputIterator last); 在c++中,distance为一函数模版,返回两个迭代器间的距离。#include<iostream>#include <cstdio>#include <vector>#incl...原创 2020-02-15 22:20:29 · 136 阅读 · 0 评论 -
1081 Rational Sum (20分)
1.求最大公约数2.分数相加3.最后输出操作时要注意#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;...原创 2020-02-15 19:00:02 · 159 阅读 · 0 评论 -
1078 Hashing (25分)
1.素数2.平方探测法#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;const int N = 1e4+5;bool isPrime(int n...原创 2020-02-14 16:39:36 · 147 阅读 · 0 评论 -
1077 Kuchiguse (20分)
从后往前配对#include<iostream>#include<cstring>#include<cstdio>using namespace std;int main() { int n; string ans=""; cin >> n; string tmp; cin.get(); getline(cin, a...原创 2020-02-14 15:58:47 · 154 阅读 · 0 评论 -
1075 PAT Judge (25分)
1.数组存储的是该数所在的位置2.a[0]与a[a[0]]//即0所在的位置 以及该位置原本应该存的数3.本来想着在判断完后 a[0] ==a[a[0]]即 0在0号位置 然后按特殊情况 即0交换最优位置,从该位置继续交换,中途不会再出现 a[0] ==a[a[0]],但是还是存在中途为a[0] ==a[a[0]]即 0在0号位置 的情况,所以只能遍历 随意交换(因为若不...原创 2020-02-14 15:07:39 · 169 阅读 · 0 评论 -
1074 Reversing Linked List (25分)
1.存储链表2.找寻合适的链表3.分段判断是否需要逆序4.玄学.....cout<<-1 << endl;答案全错 改为printf("-1\n") AC了....#include<iostream>#include<cstring>#include<algorithm>using namespace std...原创 2020-02-13 17:33:47 · 159 阅读 · 0 评论 -
1070 Mooncake (25分)
按性价比由高到底排序#include<iostream>#include<cstdio>#include<cmath>#include<cstdlib>#include<algorithm>using namespace std;struct P { float m; float p; float pp;...原创 2020-02-11 19:10:35 · 158 阅读 · 0 评论 -
1053 Path of Equal Weight (30分)
1.在排序那遇到了问题,参照https://blog.youkuaiyun.com/baidu_32157201/article/details/51725592这个博客题解的比较函数,即将P【node】这个数组里面的排序 按w数组由大到小的顺序解出 下表相当于一一对应的关系#include <iostream>#include <vector>#include &...原创 2020-02-04 17:56:28 · 148 阅读 · 0 评论 -
1051 Pop Sequence (25分)
#include<iostream>#include<cstring>#include<vector>#include<stack>#include<cstdio>#include<algorithm>using namespace std;int m, n, k;int main() { cin ...原创 2020-02-04 16:25:15 · 173 阅读 · 0 评论 -
1048 Find Coins (25分)
#include<iostream>#include<cstring>#include<vector>#include<map>#include<cstdio>#include<algorithm>using namespace std;const int N = 1e5+5;int n, m, tmp;...原创 2020-02-04 14:26:44 · 222 阅读 · 0 评论 -
1044 Shopping in Mars (25分)
1.用前缀和存储价值2.二分查找(upper_bound)某一位置开始 前缀和差大于 m-1 的位置(即可能大于等于m)3.判断是否有刚好等于m的 无 则存储最小近似值4.计算以下文字内容转载自 在路上Ven在从小到大的排序数组中,lower_bound( begin,end,num): 从数组的begin位置到end-1位置二分查找第一个大...原创 2020-02-04 12:53:30 · 202 阅读 · 0 评论 -
1043 Is It a Binary Search Tree (25分)
1.构造二叉树,注意&2.mirror即先右后左#include<iostream>#include<cstring>#include<vector>#include<map>#include<cstdio>#include<algorithm>using namespace std;str...原创 2020-02-03 16:34:01 · 190 阅读 · 0 评论 -
1040 Longest Symmetric String (25分)
substr用法: s.substr(i,j)表示从下标为i的位置开始截取j位。compare用法:s.compare(s1) 直接用s与s1比较 大于为1 小于为-1 等于为0 s.compare(i, j, s1, l, r) 表示从s[i]开始截取长度为j的字符串与 s1[l]开始截取长度为r的字符串比较#include...原创 2020-02-03 13:24:44 · 147 阅读 · 0 评论 -
1039 Course List for Student (25分)
#include<iostream>#include<string>#include<vector>#include<map>#include<algorithm>using namespace std;int main() { int n,m; string name; cin>>n>...原创 2020-02-03 12:37:53 · 155 阅读 · 0 评论 -
1038 Recover the Smallest Number (30分)
#include <iostream>#include <string>#include <algorithm>using namespace std;const int N = 10000+5;bool cmp(string a, string b) { return a+b < b+a;}string s[N];in...原创 2020-02-02 16:31:20 · 129 阅读 · 0 评论 -
1034 Head of a Gang (仅得24分)
求连通分量1.dfs2.并查集用并查集的时候,因为接下来可能还会更新通话分钟数u,我又不想把对应的一类存储再进行判断......所以就在合并时进行判断操作,寻找最大的点(pre) 实时更新 只需要确保更新完后后续的也一并压入即可。4 5测试点没过 暂时不清楚哪里遇到问题了#include<iostream>#include<cstdio>#in...原创 2020-02-02 16:00:55 · 250 阅读 · 0 评论 -
1033 To Fill or Not to Fill (24分)
最后一个测试点没过 只有24分1.距离从大到小排序 2.价格从大到小排序在 从当前站点开始最大所能到达范围里 找到第一个比当前价低的 即到达该站点(油箱必定空),最大距离即为第一个低价站点,花费则是 最大距离与之前所能到达最大距离 之间的耗油量(即处理了油箱非空的情况) 若没有,则找到所能找到的最低价,在当前站点加满油,然后计算所能到达最大距离(用于与下一站点之间油费的计...原创 2020-02-01 22:07:21 · 248 阅读 · 0 评论 -
1032 Sharing (25分)
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef pair<string, char> PII;const int N = 1e5+5;struct Node { int...原创 2020-02-01 16:54:44 · 195 阅读 · 0 评论 -
1031 Hello World for U (20分)
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main() { string s; cin >> s; int len = s.length();// cout << len << endl;...原创 2020-02-01 12:41:04 · 157 阅读 · 0 评论 -
1018 Public Bike Management (30分)
1.求出所有最短路径2.计算take和send (s, t)3.结构体耗费空间 最后一个样例会段错误 改成二维数组就ok了4.注意更新最短距离 该点之前记录的点都要清空5.在最短距离一样的时候,根据take和send来决定 更新时要注意结果的路径需要clearps:改bug改到崩.....#include <iostream>#include <q...原创 2020-01-31 18:13:52 · 242 阅读 · 0 评论