- 博客(91)
- 收藏
- 关注
原创 *浙大PAT甲级 1111
通过两边的dij最短路算法。path[]数组记录最短路中每个结点的前驱结点,第一遍dij以路径的距离为主,如果相等则判断时间最短。第二遍dij以路径所花时间为主,如果相等则判断路径的结点数最小。如果两边dij算法的路径相同则合并在一起输出,否则分开输出。AC代码:#include#include#include#include#include#include#include#
2016-09-09 23:14:18
1102
原创 **浙大PAT甲级 1010 进制转化
这个题目应用long long 才不超出范围。首先将已经进制的数转为10进制数结果为sum,如果超出long long范围 则直接输出impossible,否则进行二分查找基数,l为最小的进制数(为字符串中最大的字符对应的10进制数+1),r为最大的进制数(为sum+1),进行二分查找。AC代码:#include#include#include#include#include#i
2016-09-09 23:02:57
438
原创 浙大PAT甲级 1115
对输入的每个点都进行一插入操作,然后得出最深的那一层,然后进行广度优先搜索进行计算最后两层的结点的数量。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*60*6
2016-09-08 22:18:49
502
原创 *浙大PAT甲级 1114 并查集
考察并查集,并附加记录额外信息。为了得到一个家族中的最小id,我们可以将最小的id做为这个家族的根。并将整个家族的信息如家族人数,家族房产数,家族的房产面积。然后通过排序,输出相应结果。AC代码:#include#include#include#include#include#include#include#include#include#include#inc
2016-09-08 21:45:40
1026
原创 浙大PAT甲级 1113
超级简单。先排序,再判断n的奇偶性,奇数输出1,偶数输出0,然后求出后半段-前半段即可。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*60*60usin
2016-09-08 20:51:32
323
原创 浙大PAT甲级 1112
简单的字符串处理,用map来记录失败的字符。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*60*60using namespace std;int mai
2016-09-08 20:44:41
280
原创 *浙大甲级PAT 1109
题目有些难读懂。大致意思是:(1)每行人有n/k个,如果有多则都排在最后一行。(2)最后一行的人比前行的人都要高(3)每行中最高的人站在中间。(4)每行第二高的人站在最高人的左边,第三高的人站在最高人的右边,依次类推。(5)如果有相同身高的人,要以字母表顺序排列。AC代码:#include#include#include#include#include#i
2016-09-08 20:03:50
348
原创 *浙大PAT甲级 1110 判断是否为完全二叉树
这个题关键是如何判断是否为完全二叉树。通过bfs广搜来进行判断如果一个结点没有左二子,有右儿子那么不是完全二叉树;或者前一个结点无左二子或者俩个儿子都没有而这个结点却有孩子,那么不是完全二叉树。否则就是完全二叉树。AC代码:#include#include#include#include#include#include#include#include#include#
2016-09-08 17:28:04
503
原创 *浙大PAT甲级 1108
一个很繁琐的题,使用字符串数组,对于每个字符串需要判断第一个符号是否为负,以及是否有小数点以及个数,还需判断是否超过[-1000,1000]的范围。还有如果合法数为1个时,number后面不加s,如果为0个则用Undefined来代替Y 。AC代码:#include#include#include#include#include#include#include#include
2016-09-08 16:18:15
477
原创 *浙大PAT甲级 1107 并查集
这个题目求有共同爱好的人的集体数,以及从大到小输出各个集体的人数。并查集的思想。我的思路是:用num[i]数组表示根为爱好i的人数个数。最后排序统计不等于的num[i]有多少个,然后排序,后序输出。AC代码:#include#include#include#include#include#include#include#include#include#include
2016-09-08 14:11:09
398
原创 浙大PAT甲级 1106 广度优先搜索
用vector数组来存储每个点的子节点编号,然后通过广度优先搜索从根结点开始,来寻找最小的深度的根,并统计个数。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*
2016-09-08 13:06:42
417
原创 **浙大PAT甲级 1105
首先需要求出m,n。从1开始遍历到根号n,如果n能整除i,则得出n/i-i的差,更新最小值。接下来关键是如何得到该矩阵,可通过一个flag变量,flag为0,是纵坐标++,如果到达边界或者已经有值则转向flag为1;为1,是横坐标++,当到达边界或已经有值了则转向flag为2;为2,是纵坐标--,当到达边界或者已经有值了则转向flag为3;为3,是横坐标--,当到达边界或者已经有值了则转向fl
2016-09-07 22:40:52
396
原创 浙大PAT甲级 1104
只要统计每个数出现的次数即可。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*60*60using namespace std;double a[10000
2016-09-07 20:23:32
348
原创 **浙大PAT甲级 1103 dfs+快速幂
题目的意思是求一个数n=k个数的p次方之和。对n进行深度优先搜索,按照递减的顺序进行搜索,并计算sum的值,如果sum的值比maxxx大,则更新vector,并用ans来统计结果次数,如果为0,那么输出impossible。还用了快速幂来求解数的P次方。AC代码:#include#include#include#include#include#include#inclu
2016-09-07 19:31:07
365
原创 浙大PAT甲级 1102
反转一个二叉树。先来个广搜再来个中序遍历。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*60*60using namespace std;struct n
2016-09-07 17:17:10
362
原创 *浙大PAT 1101
这个题意是找到某个数的左边都比这个数小,这个数的右边都比这个数大。我是通过输入时,判断是否比左边的最大值要大,如果是则把该数的下标加入到一个吧新数组b中。然后对原数组进行从右到左遍历,有C数组记录这个数以及右边的数的最小值,然后通过遍历b数组来比较原数是否小于等于右边最小的数,是则存入新数组d中。AC代码:#include#include#include#include#i
2016-09-07 16:53:58
581
原创 *浙大PAT甲级 1099层次遍历二叉查找树
先通过输入进行建树,然后根据中序遍历对应从小到大的数,再进行bfs进行层次遍历。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*60*60using name
2016-09-07 16:00:27
375
原创 **浙大PAT甲级 1098堆排序
主要考察了堆排序。具体堆排序的操作点击打开链接。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*60*60using namespace std;vecto
2016-09-07 14:41:01
418
原创 *浙大PAT甲级 1096
这个题目我的思路是i从2到r(等于n)开始遍历,如果r能整除i,如果第一次则标记这个i,r/=i,sum++,继续判断,直到不能整除为止。到了不能整除时,如果是因为之前r改变过则将r置成n,同时sum=0,i应变成上次标记的值。AC代码:#include#include#include#include#include#include#include#include#in
2016-09-07 13:38:37
428
原创 浙大PAT甲级 1097
简单的链表处理,用两个vector来进行存储保留的和删除的结点。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 24*60*60using namespace st
2016-09-07 11:17:42
307
原创 浙大PAT甲级 1100
火星数与地球数的转化,注意如果输入的数为13的倍数,则后面的tret则省略。例如:13 应输出tam 而不是输出tam tret。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#def
2016-09-06 19:35:28
896
原创 **PAT浙大甲级 1095
这个题很注重时间复杂性,我是用map >来存每一个号码的车的记录。然后根据栈来求有效的记录,别用hash将时间与整数想映射,hash[某一时间段]++,并统计每个车今天停车的时间,然后根据输入的时间 即可输出此刻停车的数量。最后通过排序,输出停车最长的时间的车号。最后个测试用例超时。28分代码:#include#include#include#include#inclu
2016-09-06 17:21:43
464
原创 浙大PAT甲级 1094
简单的BFS求数的那一层结点数最大,输出最大数量与相应的层。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 999999999using namespace std
2016-08-31 11:34:01
224
原创 **浙大PAT甲级 1093 树状数组
这个题目求一个字符串中PAT的数目,我们可以这样处理。对字符串每个字符进行遍历,当字符为P时len1++,当字符为A时,则将len1加入到树状数组中,当字符为T时,对树状数组求和累加并取余。AC代码:#include#include#include#include#include#include#include#include#include#include#inc
2016-08-31 11:17:04
301
原创 浙大PAT甲级 1092
简单的字符串处理。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 999999999using namespace std;int main(){ st
2016-08-30 21:23:51
260
原创 *浙大PAT甲级 1091 广搜
这个题目很难读懂,查了资料才知道求三位数组的BFS,对于每个出现的1,寻找其连接的1,统计个数如果大于等于T,则将其加入。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define in
2016-08-30 15:48:30
285
原创 浙大PAT甲级 1090 广搜
广搜求层次,然后进行排序求出最大层次以及在最大层次结点的数目。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 999999999using namespace st
2016-08-30 15:07:30
346
原创 *浙大PAT甲级 1089 归并排序与插入排序
先判断是否由插入排序而得来,再判断归并排序。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 999999999using namespace std;vector
2016-08-30 14:40:51
387
原创 浙大PAT甲级 1088
考虑的情况比较多:(1) 除数为0则,则等号后面输出inf。(2)求最小公倍数时,两数相乘的范围可能超过了int所表示的范围,因此应选用long long 类型。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define
2016-08-30 12:41:58
413
原创 *浙大PAT甲级 1087 dijkstra+dfs
由于输入的是城市名称,因此要先将名称与id想对应,可以用map映射。dist数组代表源点到该点的最短路径,path数组记录推荐路径,num数组记录源点到该点的最大happy值。通过dijkstra来得出最短路径以及最大happy值和相应路径。但关键是怎么求有多少条总和为最短路径的路径数,这里可以通过得到的最短路径进行深度优先搜索。AC代码:#include#include#
2016-08-30 11:52:44
403
原创 **浙大PAT甲级 1086 二叉树的先中根遍历求后根遍历
题目中push的顺序为先根遍历,pop()得到的结果为后根遍历,因此这个题是根据先根遍历和中根遍历来求后根遍历。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 999
2016-08-30 10:33:45
378
原创 **浙大PAT甲级 1085
先对数组进行从小到大排序,对每个元素运用二分查找该数*p+1,得到位置,但此时还要向前减去相同的数。然后再找出最大值AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 9
2016-08-29 21:52:42
448
原创 浙大PAT甲级 1084
很简单的字符串题,我用了set与vector,set来保证唯一性。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 999999999using namespace
2016-08-29 20:54:30
354
原创 浙大PAT甲级 1084
先排序然后二分查找临界点。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 999999999using namespace std;int n;struct n
2016-08-29 20:47:32
358
原创 浙大PAT甲级 1082
题目需注意0的情况。碰到0不输出,标记=1,碰到数如果标记为1,输出ling,再输出数,标记=0。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 999999999
2016-08-29 14:55:31
485
原创 *浙大PAT甲级 1081
题目不难,但是需要注意的细节很多,尤其是 long long虽然数的范围在int内,但是求最小公倍数时,相乘会超出int范围,因此用long long;AC代码:#include#include#include#include#include#include#include#include#include#include#include#define inf 9999
2016-08-29 14:06:44
439
原创 浙大PAT甲级 1080
结构体排序以及一些特殊情况的考虑。用两个截止数组分别表示最后一位入取到该学校的两个分数值。如果这次遍历与上一位的rank相同,则判断该两门成绩是否与该学校的两个截止数组相同,如果相同,无聊是否满额,都继续招人。AC代码:#include#include#include#include#include#include#include#include#include#in
2016-08-29 12:49:21
562
原创 *浙大PAT甲级 1079
这个题对时间的限制比较要,因此要用bfs先求得各结点的层次,否则在遍历中多次对结点求层次会导致超时。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define inf 999999999using namespace std;
2016-08-29 11:58:05
612
原创 **浙大PAT甲级 1078
以除法为散列函数,注意要用到二次探测解决冲突。二次探测采用下列探测序列:h(key),h1(hey),h2(hey).........h2i-1(key), h2i(key)......h2i-1(hey)=(h(key)+i*i)%m i=1,2.....(m-1)/2; (1)h2i(key)=(h(key)-i*i)%m i=1,2......(m-1)/2; (2)
2016-08-29 10:17:32
423
原创 浙大PAT甲级 1077
求公共后缀,暴力循环即可。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define inf 999999999using namespace std;string s[105];int main(){ int
2016-08-28 18:16:26
442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人