- 博客(89)
- 收藏
- 关注
原创 matplotlib.pyplot画图
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.scatter(xcord1, ycord1, s = 30, c = 'red', marker = 's') ax.scatter(xcord2, ycord2, s = 30, c = 'g...
2019-07-24 10:43:10
236
原创 PAT (Advanced Level) 1086 Tree Traversals Again (二叉树构造及遍历)
这题巨巨巨巨坑。一直以为Push结点就是从1至n的顺序来的,交了之后只错了一个case,而且报的是段错误,查了好久都不觉得什么地方会有段错误啊,栈可能空的情况我已经检查了,其余的地方不可能会错啊,最后改来改去错误还是定位在Push操作那段代码里,既然栈不可能出错,那剩下只可能是各个结点,而root和tmp结点都malloc过,而且全都确保会赋值,因此只有pre会有问题,最后想到万一第一个Push...
2018-11-18 20:12:54
207
原创 PAT (Advanced Level) 1081 Rational Sum (gcd+lcm)
这题看起来应该是gcd+lcm,但是不用lcm也能过。还是记录下lcm的代码吧。int lcm(int a, int b){ return a / gcd(a, b) * b;}本题代码: #include<bits/stdc++.h>using namespace std;typedef long long ll;int n;long x,...
2018-11-13 21:38:58
172
原创 PAT (Advanced Level) 1079 Total Sales of Supply Chain (树的层序遍历)
简单的层序遍历题,层序扫一遍整棵树,每层个数统计下最后计算即可。#include<bits/stdc++.h>using namespace std;int n;double p, r;vector<int> t[100005];int mark[100005];int level[100005];int max_level;void solv...
2018-11-12 19:56:34
121
原创 PAT (Advanced Level) 1078 Hashing (哈希、平方探测冲突处理Quadratic probing)
记录下这题是因为注意平方探测的公式是:,其中i = 0,1,2...TableSize而非先对key取模再加平方。这题质数范围不大,不用二分直接扫也不会T。#include<bits/stdc++.h>using namespace std;int m,n;int cnt;int prime[1300];void init(){ cnt = 0; fo...
2018-11-11 18:01:33
208
原创 PAT (Advanced Level) 1074 Reversing Linked List
最初没仔细读题,case1、5没过,仔细看了看题,真正的题意是:把整个链表以k个结点为一个单位进行reverse。如果剩下结点不足k个,就不用。#include<bits/stdc++.h>using namespace std;typedef struct Node * PtrNode;struct Node{ int add, data, nadd; PtrNod...
2018-10-09 21:51:39
106
原创 PAT (Advanced Level) 1071 Speech Patterns (字符串分词)
每个字符串的题都能学到新东西。。。不擅长字符串处理的,去看网上的代码,学到一堆新的函数 传送门这题用isalnum()函数就极其简单。还有个注意点,第一个循环中的第二个if,不能用else if,这样导致字符串最末是非法字符的case过不了,测试数据最后一个case应该就是卡了这个点。#include<bits/stdc++.h>using namespace s...
2018-10-04 11:19:08
144
原创 PAT(甲)2018年秋季考试题目记录
7-1 Werewolf - Simple Version 这是道逻辑题,没太做过类似这种的题目,所以不是很擅长,这题卡了我四十分钟,而且是过掉2,3之后回头才过掉这题的,但其实想来这题还是很简单的。看题目数据不大,而且狼人和人类中分别必有一人说谎,因此两重循环,每轮假设两个狼人其他均为人类,然后看他们说的话与对应角色的假设身份是否冲突,如果冲突,那么就用掉一次该角色阵营的说谎次数,由于...
2018-09-11 10:19:25
1434
1
原创 PAT (Advanced Level) 1142 Maximal Clique (判断最大团)
定一个临时统计数组tmp,假如每检查一组序列的时候,遍历每个点它所相邻的点,被扫描到的相邻点在tmp相应下标的位置+1,表示这个点被扫到了一次, 通过题目给的样例,可以推出这样一种规律:假如最后tmp中计数等于k(即给定序列中数字个数)的个数等于k(这里有点绕,手动模拟下就好理解),那么这个图就是最大团;假如计数等于k的个数大于k则是团,但不是最大团;剩下的假如小于的就不是团。上面的这个规律可...
2018-09-06 21:34:16
211
原创 PAT (Advanced Level) 1141 PAT Ranking of Institutions
这题有个精度的问题,如果每输入一个学生,进行相应的tws计算,由于只取int部分,数据大的时候,误差可能比较大,所以第一遍最后一个case过不了,最后改成求和再计算。 #include<iostream>#include<cstdio>#include<vector>#include<map>#include<algorithm&...
2018-09-06 10:04:28
101
原创 PAT (Advanced Level) 1147 Heaps
我真的是心态崩了,今晚是什么情况,十分钟敲完代码,只对了1个case,我以为是判断最大还是最小堆有问题,一直找,一直改,还是不行,后来去网上看了别人的代码,改了先遍历整个堆确定是什么堆,再后序遍历一次输出,结果还是只对一个???当时我就黑人问号脸,最后发现,"Not Heap"少打了个't',鼓捣了40分钟???最后我把第一遍的代码交了一遍AC了。WTF!!!下次再这种情况,倒立喝水。...
2018-09-05 21:57:18
96
原创 PAT (Advanced Level) 1146 Topological Order (拓扑排序)
写的时候太不仔细了,找到错误的序列,每个case居然push完序列号后直接break,然后接下来的数没读完,导致一堆WA,怀疑人生了都。。。#include<iostream>#include<cstdio>#include<vector>using namespace std;int n,m,k;vector<int> g[10...
2018-09-05 20:53:45
141
原创 PAT (Advanced Level) 1145 Hashing - Average Search Time (Hash+Quadratic Probing)
纯哈希+平方探测,这里的平方探测很诡异啊,增量的范围最大居然是到表长,没明白怎么回事(猜想大概是采取单纯增长),导致一开始算ASL一直对不上 。#include<iostream>#include<cstdio>#include<vector>#include<cmath>using namespace std;int msize,...
2018-09-05 20:19:02
153
原创 PAT (Advanced Level) 1066 Root of AVL Tree (AVL树构造)
完全考察AVL树的建树,光看书感觉已经掌握了,结果敲的时候发现总会漏一些细节#include<cstdio>#include<iostream>#include<algorithm>using namespace std;typedef struct AVLNode * Position;typedef Position AVLTree;ty...
2018-09-04 10:22:17
140
原创 PAT (Advanced Level) 1064 Complete Binary Search Tree (二叉搜索树性质利用)
一开始只想着建树,然后想像AVL树那样通过建树过程中的变换,来整棵树最后成为一颗完全二叉树,但是推了半天没找到规律。就去网上看了下别人的思路。。真是一看就明白了,好简单。利用二叉搜索树的一个性质:中序遍历BST,得到的就是升序的序列。把思路转变下,已知存在了一颗完全二叉树,那么如果它还是一颗BST,那它的中序遍历结果一定是升序的,因此,先将输入的数字序列升序排列,再中序遍历完全二叉树,得到...
2018-09-03 20:20:51
113
原创 PAT (Advanced Level) 1063 Set Similarity (set应用)
观察下会发现两个set的长度和减去他们合并后的长度,差值就是相同的数量也就是Nc,合并后的长度就是Nt。因此用set来进行操作就很方便了。此外要打表。否则最后个case会超时。 用不着结构体的,一开始是觉得可能还要记录一些东西,所以写了个结构体,其实根本用不到,也懒得改了#include<iostream>#include<cstdio>#include&...
2018-09-03 11:08:14
105
原创 PAT (Advanced Level) 1057 Stack (树状数组+二分)
第一遍理解错了题意,以为是找栈中间位置那个元素。。。然后兴高采烈手写了个栈以及各种操作权当复习数据结构,结果样例都过不了。。。仔细查了查数据才意识到是找中位数=_=这题找中位数,范围1e5,树状数组就可以,然后由于数据可能比较稀疏,全扫一遍肯定TLE,因此加个二分。顺便这题发现个问题,不知道是不是PAT字符串数组不能用char * s;来初始化,一旦用就是段错误,C++的字符和字符串的原...
2018-09-01 14:11:00
175
原创 PAT (Advanced Level) 1056 Mice and Rice (模拟)
模拟每轮的结果,每小组的第一进入下一轮,即将对应的id放入下轮的order中,在这轮停止的则放入栈中,这样直到最后order中仅一个人表示已经选出最大的,结束模拟,然后从栈中全部取出(此时已经是有序的了),只需根据round值更新排名信息,最后按0-Np的顺序输出即可。题目简单没有坑,只是有点繁琐。#include<iostream>#include<cstdio&...
2018-09-01 11:58:18
114
原创 PAT (Advanced Level) 1055 The World's Richest (多关键字排序)
记录下,第一遍string有个case超时,然后我把每次遍历的代码改成基于年龄设置200个桶,这样就可以在年龄段间遍历,这样确实可以过掉原来超时的那个case,但是另一个本来能过的case居然超时了。。。从最后全过的时间对比来看,我猜想大概是后面超时那个case的输出比较集中在worth值高的那部分里,而用桶来遍历,反而更耗时间。最后,第一遍没过还是因为string比较慢,这其实跟我第一次猜...
2018-08-31 20:49:45
111
原创 PAT (Advanced Level) 1053 Path of Equal Weight (dfs)
这题很简单,没有坑点。记录这题的原因是,第一次提交最后一个case报了段错误,我从上到下代码读了个遍,并不觉得哪里有问题,后来就在网上找,找到个跟我一样,在比较函数里,如果两个path相同,返回的值是true,导致了段错误。查了下大概意思是:只有严格的大于,才应该返回true,小于和等于都归于false详细解释:调用sort段错误问题#include<iostream>...
2018-08-31 11:46:19
95
原创 PAT (Advanced Level) 1051 Pop Sequence (模拟栈的操作)
一开始忘了栈空的时候也要push,结果一堆段错误,我以为是读入数字计数不对,改用vector先存发现没卵用,仔细看了看代码才突然意识到。。。模拟这串数字的出入栈,如果当前读到的数字是7,那么7之前的数字肯定是在栈中或者在前一波中已经出栈了。其中low就是来记录当前这一波入栈最小的值,然后每次入栈都判断下size是不是超过了m,超过即失败;以及如果当前的数字比low小,说明这个数字在前面已经...
2018-08-30 11:24:23
141
原创 PAT (Advanced Level) 1049 Counting Ones (规律、思维)
感觉这题完全就是一种思维题,范围,暴力根本不需要思考,所以跟1有关系的,就在于各个数位上,这样思路下来,推出以下关系:1. 该位为0,只受高位影响,如203中的十位,只可能出现10~19,110~1192.该位为1,受高位和低位影响,如213的十位,有10~19,110~119;213,212,211;不同分号间分别代表高位和地位影响,以及还有它自身210(其实也可以归在低位影响中)3...
2018-08-29 20:29:59
123
原创 PAT (Advanced Level) 1047 Student List for Course (字符串哈希及反向哈希)
id反向hash成name,就是正向hash的逆过程 #include<iostream>#include<cstring>#include<cstdio>#include<vector>#include<map>#include<algorithm>using namespace std;int n, ...
2018-08-28 23:22:23
182
原创 PAT (Advanced Level) 1045 Favorite Color Stripe (DP)
dp[i][j]表示fav中第i个数匹配到stripe第j个数时,所能获得的最大长度。 由于同样的数字可以重复,因此状态转移方程:#include<iostream>#include<cstdio>#include<vector>#include<cstring>#include<algorithm>using na...
2018-08-28 10:28:57
121
原创 PAT (Advanced Level) 1044 Shopping in Mars (二分+前缀和)
一开始对每个i位置查最接近m的区间时,从0扫到刚好大于等于m的位置,这样有个case超时了。然后想了下,前缀和是有序的,而我们必然可以从0~i这区间找到一个位置j使得pre[i] - pre[j] >= m,因此想到二分。#include<iostream>#include<cstdio>#include<vector>#include<...
2018-08-27 11:55:55
160
原创 PAT (Advanced Level) 1043 Is It a Binary Search Tree (BST先序求后序)
发现个很巧妙的做法:原博:https://www.liuchuo.net/archives/2153 利用了先序和后序的关系来直接建立后序,先假设每个都是BST,如果建立完之后,post的长度不是n,就表明,其中有些点肯定被忽略了,这就说明这不是BST;再假设是MirrorBST,同理如果还不是,则两种都不是了。PostTraversal函数中的left和right,分别表示左右子树的...
2018-08-26 17:28:49
115
原创 PAT (Advanced Level) 1040 Longest Symmetric String (Manacher)
求字符串最长回文子串 Manacher具体思想:https://www.cnblogs.com/z360/p/6375514.html#include<iostream>#include<cstdio>#include<string>#include<cmath>#include<algorithm>using nam...
2018-08-26 12:48:32
114
原创 PAT (Advanced Level) 1039 Course List for Student (字符串哈希)
本来用map来映射名字的,但是超时了。由于名字只有四位,改用哈希。顺便把数据结构字符串哈希那一部分翻出来重看了一遍。#include<iostream>#include<cstdio>#include<cstring>#include<map>#include<vector>#include<queue>...
2018-08-25 17:36:25
113
原创 PAT (Advanced Level) 1038 Recover the Smallest Number (字符串转数字)
学习了一波c++里的字符串转数字。还有这种字符串的排序方法我一开始也没想到 #include<iostream>#include<cstring>#include<cstdio>#include<vector>#include<algorithm>#include<sstream>using namesp...
2018-08-25 11:59:59
105
原创 PAT (Advanced Level) 1034 Head of a Gang (带权并查集+离散化)
这题感觉很不错,map、set、vector、pair的合理利用,对数据的妥善处理。值得好好记录下。虽然题目本身思路比较简单,但是如果不能对数据进行好的处理,写起来还是相当麻烦的,我就是在倒腾了半天之后,感觉越写越乱,然后百度看到了一个很不错的方法,就学习了他的方法。原博链接首先,要使用并查集我们必须要对name进行离散化,我竟然一开始想到的是用36进制转十进制。。。现在的方法,也是一种应...
2018-08-23 20:48:33
126
原创 PAT (Advanced Level) 1018 Public Bike Management (Dijkstra+dfs)
套路跟前一题完全一样,只是要计算需要送出和收回的车。其中两个数据卡的是一条路中后面如果有多余的车是不能填充前面站点缺少的车的,所以在dfs中用了两个变量来分别记录需要的车和多余的车。这两题刻意留到数据结构复习完图之后写,加深下体会。#include<iostream>#include<cstdlib>#include<cstdio>#inclu...
2018-08-22 21:54:02
111
原创 PAT (Advanced Level) 1030 Travel Plan (Dijkstra)
Dijkstra搜最短路,再dfs查费用最少的一条。模板题。 #include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<vector>#include<climits>using namespace std;...
2018-08-21 22:03:31
128
原创 PAT (Advanced Level) 1033 To Fill or Not to Fill (模拟)
贪心加模拟。先分两种情况: 1.从这个点加满油可以到达终点 a.从剩下的路程中找是否有价格更便宜的,如果有,就先到那个点(这里注意是一旦找到便宜的就立马结束本次寻找,先过去早说)。 b. 如果没有更便宜的,就直接到终点。 2.无法从这点到达终点 a.同上一种的a ...
2018-08-21 13:28:58
133
原创 PAT (Advanced Level) 1029 Median
自己的代码:用一个队列存第一行数字,第二行输入的时候就直接和队头的比较,每比较一次cnt+1。这种写法有点麻烦,因为情况有点多,如:队列是不是空;如果队头删了是不是空等等都要有相应的操作,所以代码有点冗长。还有个问题,一开始queue里存了long long,内存就超了,这个以后得注意下。#include<iostream>#include<cstdlib>#...
2018-08-17 13:46:37
124
原创 PAT (Advanced Level) 1028 List Sorting (字符串处理语法题)
字符串的语法不是很熟悉,都记一下#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,c;struct People{ char id[7],...
2018-08-16 12:42:26
99
原创 PAT (Advanced Level) 1024 Palindromic Number (大数加法)
模拟大数加法#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;string n;int k, cnt = 0;string add(string x, s...
2018-08-15 12:32:06
135
原创 PAT (Advanced Level) 1020 Tree Traversals (分治+二叉树的一维数组表示)
虽然过了,但是如果数据再变态点,比如30个全是右子树,数组就不够用了,一开始也没想到,但交了之后,最后一个case段错误,才意识到,可能层数会很多,那就需要数组长度很长,最后开到1e5,幸运得过了。思路就是通过后序和中序来把后序的那串左右一直划分(分治),当前划分的这个基准点就可以得知应该所在的位置。#include<iostream>#include<cstdio&...
2018-08-13 16:08:04
139
原创 PAT (Advanced Level) 1017 Queueing at Bank (模拟)
不是很喜欢模拟的题,比较麻烦,通常逻辑不会有错,但是写的过程中,代码有点小问题很难找出来。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>using na...
2018-08-12 15:15:50
111
原创 PAT (Advanced Level) 1016 Phone Bills (map,set,pair)
这种比较麻烦的数据处理考察语法吧感觉。map,set这两个结构会自动进行排序。因此对此题很便利。总的来说这题如果语法,库都比较熟悉就很简单,由于有些结构没怎么用过,因此照着网上的代码敲了遍。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#i...
2018-08-09 14:03:16
97
原创 PAT (Advanced Level) 1014 Waiting in Line(模拟)
唯一坑点:并不是五点后结束的就Sorry,而是五点后开始的输出Sorry,即五点前开始,但是拖到五点后也会完成。没看清题目,查了半小时没找出错。。。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<queue>#incl...
2018-08-08 13:53:25
96
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人