
浙大pat
文章平均质量分 68
luowei5513
这个作者很懒,什么都没留下…
展开
-
*浙大PAT甲级 1045
这个题考查dp,最长非递减序列。dp[i]表示以a[i]为结尾的最长非递减序列。初始化dp[]为1,状态转移方程为dp[i]=max(1,dp[j]+1)(j特别注意:没有出现在最喜爱的序列中的数,其优先级为0,在考虑最长非递减序列时,应直接忽略0。AC代码:#include#include#include#include#include#include#include原创 2016-08-22 16:07:38 · 512 阅读 · 0 评论 -
**浙大PAT甲级 1057 树状数组+二分法
这个题为栈进出的模拟,以及对栈中的元素输出第(栈的大小+1)/2小的元素。这里如果用快速排序会有很多个case不通过,因此这道题需要用树状数组+二分法。所谓的树状数组是一个查询和求和都是log(n)的一种数组结构,具体函数参考树状数组的博客。AC代码:#include#include#include#include#include#include#include#in原创 2016-08-24 21:14:33 · 330 阅读 · 0 评论 -
浙大PAT甲级 1058
简单的A+B。AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){ int a,b,c,d,e,f; scanf("%d.%d.%d",&a,&b,&c)原创 2016-08-24 21:52:26 · 355 阅读 · 0 评论 -
浙大PAT甲级 1059
分解因式题,可先筛选素数,再进行遍历判断。AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int mark[100000];int prime[100000];int num=0;void原创 2016-08-24 22:21:57 · 412 阅读 · 0 评论 -
*浙大PAT甲级 1060
判断两个数是否相等,这个题需要考虑的内容有很多:1.若有前导0,则应该去除。2.若输入的数小于1,则应判断小数点移动多少位才为0.d1d2.....d1>0除非d1==0。3若输入的的数是个整数无小数点,则对应结果的10的指数应为输入数(去掉前导0)的位数。4.结果小数点后面的数大于0,除非这个数等于0。5.不够位数,后面添0。AC代码:#include#includ原创 2016-08-25 18:47:36 · 473 阅读 · 0 评论 -
浙大PAT甲级 1061
简单题,先用map现将星期与星期的英文相对应。然后根据题意查找相等的字符。AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;string s1,s2,s3,s4;map m;void in原创 2016-08-25 19:25:08 · 233 阅读 · 0 评论 -
浙大PAT甲级 1062
简单的结构体排序。AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;struct node{ int id; int vir; int tal;};vector原创 2016-08-25 19:51:58 · 452 阅读 · 0 评论 -
浙大PAT甲级 1063
简单的在集合上操作的题,可以使用stl的set,用map将集合与标号想对应。AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;map >m;int main(){ int n;原创 2016-08-25 20:07:03 · 272 阅读 · 0 评论 -
**浙大PAT甲级 1064
由于二叉查找树的中序遍历为递增序列,因此题目中的完全二叉查找树的中序遍历也应为递增序列,又由于完全二叉树的特点,某结点i的左儿子编号为2*i,右儿子编号为2*i+1。AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing nam原创 2016-08-25 21:28:41 · 572 阅读 · 0 评论 -
浙大pat甲级 1023
用hash来统计每个数的个数,若乘以2以后每个数出现的个数与先前统计的个数一样,则输出Yes否则No.#include#include#include#include#include#include#include#define eps 10000000#include#include#include#includeusing namespace std;int ha原创 2016-08-14 12:53:02 · 1027 阅读 · 0 评论 -
*浙大PAT甲级 1056
题目的意思很难理解,即将第三排的数作为索引,每三个三个一组,例如6,0,8一组,则19,25,57一组,选出最大的数,又以三个三个一组,以此进行直到得出第一名。依次输出排名。AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing原创 2016-08-23 21:51:53 · 715 阅读 · 0 评论 -
浙大PAT甲级 1055
简单题,首先将输入的信息先后按照worth递减,年龄递增,名字字典序递增来进行排序。然后对于每个查询,从头开始遍历输出最多M个的年龄在范围内的信息。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define inf 26*2原创 2016-08-23 20:24:30 · 348 阅读 · 0 评论 -
浙大PAT甲级 1046
简单题,但是暴力循环会超时,应用sum[j]-sum[i]来表示i到j的距离。AC代码:#include#include#include#include#include#include#include#include#includeusing namespace std;int a[100005];int sum[100005];int main(){ in原创 2016-08-22 16:35:56 · 238 阅读 · 0 评论 -
浙大PAT甲级 1047
注意用scanf和printf,以及char s[5],再通过hash映射课程编号,节省时间。AC代码:#include#include#include#include#include#include#include#include#include#define inf 26*26*26*10+5using namespace std;struct node{原创 2016-08-22 17:20:18 · 443 阅读 · 0 评论 -
浙大PATj甲级 1048
该题可以采用set,其可自动排序。遍历set,然后查找m-*it是否也在set中。注意:为了解决出现多次的数,可以采用hash来记录各个数字的个数,如果*it乘以2等于m,且hash[*it]>=2,则满足条件。AC代码:#include#include#include#include#include#include#include#include#include#d原创 2016-08-22 19:51:07 · 299 阅读 · 0 评论 -
*浙大PAT甲级 1049
对于给定的数abcd,分三种情况。(1)最后一位数d出现1的次数,若d==0,则出现的次数为abc次;若d>=1,则个位出现1的次数为abc+1。(2)首位数a出现1的次数,若d==1,则出现1的次数为bcd+1此,若d>1,则出现1的次数为10^(数的个数-1)。(3)除首尾(b|c)出现1的次数,这里已b为说明,若b==0,则出现1的次数为a*100;若b==1,则出现1的次数为a原创 2016-08-22 21:50:01 · 308 阅读 · 0 评论 -
浙大PAT甲级 1050
很坑爹的题,时间要求高。用了hash来做,且strlen(a1)别放在for中的条件里面,否则会超时。AC代码:#include#include#include#include#include#include#include#include#include#include#define inf 26*26*26*10+5using namespace std;cha原创 2016-08-22 22:42:59 · 322 阅读 · 0 评论 -
*浙大PAT甲级 1051
判断序列是否能够通过大小为M的栈得来。主要考察栈的模拟。当栈为空时,或者栈顶不等于该值且栈的容量跳出循环如果栈顶不等于该值则是不合理,如果等于则弹出栈顶继续循环。AC代码:#include#include#include#include#include#include#include#include#include#include#include#defi原创 2016-08-23 17:33:56 · 736 阅读 · 0 评论 -
浙大PAT甲级 1052
简单的结构体排序,需注意的是:若开始的输入地址为-1,则输出应为0 -1。可采用map 来将地址与结点做映射。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define inf 26*26*26*10+5using n原创 2016-08-23 18:58:43 · 244 阅读 · 0 评论 -
浙大PAT甲级 1053
深度优先搜索。可使用邻接链表来存储整个图,为了使结果为非增输出,可根据他们的费用从大到小进行排序,然后从0开始进行深度优先搜索。数组path[i]来记录满足条件时,i的后续结点。AC代码:#include#include#include#include#include#include#include#include#include#include#include#原创 2016-08-23 19:47:08 · 591 阅读 · 0 评论 -
浙大PAT甲级 1054
寻找出现最多次数的数,可以通过hash来表示各个数出现的个数,为了方便找到出现最大次数的数,可采用set从而避免遍历hash时不必要的时间浪费。AC代码:#include#include#include#include#include#include#include#include#include#include#include#define inf 26*26*26原创 2016-08-23 20:01:56 · 175 阅读 · 0 评论 -
浙大pat甲级 1024
可用3个vector来进行处理,先将输入的数字都压入到第1第2个vector中,从i=0到K循环判断是否为对称数,如果不是对称数则将其与倒转数相加,并将得到的每一位数加入到第三个vector的头部,并将新的第三个vector重新赋值给第一第二,直到该数为对称数或i==k结束循环。ac代码:#include#include#include#include#include#inclu原创 2016-08-14 14:28:00 · 941 阅读 · 0 评论 -
浙大pat甲级 1025
结构体排序问题,可用vector v[105] 分别来保存每个考场考生的信息,分别对每个考场的学生按照成绩来排序得出每个考场的排名,再将学生全部存到总的vector中并排序,得出这次考试全部学生的排名,注意分数相同排名一样。ac代码:#include#include#include#include#include#include#include#define eps 1000原创 2016-08-14 15:04:31 · 352 阅读 · 0 评论 -
**浙大PAT甲级 1066 平衡二叉查找树
平衡二叉查找树的相关概念与旋转操作参考:点击打开链接AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;struct node{ int data; struct node*原创 2016-08-26 19:21:46 · 461 阅读 · 0 评论 -
**浙大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 · 404 阅读 · 0 评论 -
浙大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 · 421 阅读 · 0 评论 -
*浙大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 · 481 阅读 · 0 评论 -
*浙大PAT甲级 1110 判断是否为完全二叉树
这个题关键是如何判断是否为完全二叉树。通过bfs广搜来进行判断如果一个结点没有左二子,有右儿子那么不是完全二叉树;或者前一个结点无左二子或者俩个儿子都没有而这个结点却有孩子,那么不是完全二叉树。否则就是完全二叉树。AC代码:#include#include#include#include#include#include#include#include#include#原创 2016-09-08 17:28:04 · 507 阅读 · 0 评论 -
*浙大PAT甲级 1107 并查集
这个题目求有共同爱好的人的集体数,以及从大到小输出各个集体的人数。并查集的思想。我的思路是:用num[i]数组表示根为爱好i的人数个数。最后排序统计不等于的num[i]有多少个,然后排序,后序输出。AC代码:#include#include#include#include#include#include#include#include#include#include原创 2016-09-08 14:11:09 · 406 阅读 · 0 评论 -
*浙大甲级PAT 1109
题目有些难读懂。大致意思是:(1)每行人有n/k个,如果有多则都排在最后一行。(2)最后一行的人比前行的人都要高(3)每行中最高的人站在中间。(4)每行第二高的人站在最高人的左边,第三高的人站在最高人的右边,依次类推。(5)如果有相同身高的人,要以字母表顺序排列。AC代码:#include#include#include#include#include#i原创 2016-09-08 20:03:50 · 354 阅读 · 0 评论 -
浙大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 · 288 阅读 · 0 评论 -
浙大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 · 327 阅读 · 0 评论 -
*浙大PAT甲级 1114 并查集
考察并查集,并附加记录额外信息。为了得到一个家族中的最小id,我们可以将最小的id做为这个家族的根。并将整个家族的信息如家族人数,家族房产数,家族的房产面积。然后通过排序,输出相应结果。AC代码:#include#include#include#include#include#include#include#include#include#include#inc原创 2016-09-08 21:45:40 · 1029 阅读 · 0 评论 -
浙大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 · 352 阅读 · 0 评论 -
**浙大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 · 368 阅读 · 0 评论 -
*浙大PAT甲级 1065
网上大多介绍了判断x+y溢出的那种情况。以下介绍A+B高精度算法。需要判断符号,较麻烦。AC代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;string cal(string a,int afl原创 2016-08-26 13:46:32 · 440 阅读 · 0 评论 -
*浙大PAT甲级 1067
为了得到最小交换次数,只需将0与最终在该位置上的数进行交换,可用map来讲数字与位置进行映射。当i位置上的数字为i时,则将该数从map从删掉,当0位于第0位时,且map的size不等于1,则应将0与map中的第二个的key进行交换,再重复以上步骤,直到map的大小等于1时,循环结束。AC代码:#include#include#include#include#include#inc原创 2016-08-26 22:14:41 · 1026 阅读 · 0 评论 -
浙大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 · 903 阅读 · 0 评论 -
浙大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 · 310 阅读 · 0 评论 -
*浙大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 · 432 阅读 · 0 评论