- 博客(72)
- 收藏
- 关注
原创 PAT甲级解题报告汇总
PAT甲级解题报告汇总(更新中……)最近在刷PAT甲级题目,AC的题目都发了博文做记录。下面对博文进行一下汇总整理,方便查阅。下面所有题目的解题报告都是本人自己所作,每篇博文都有题目大意的解读,解题思路和完全正确的解题代码。
2017-08-02 11:19:37 2031
原创 周志华老师推荐机器学习书单
周志华老师推荐机器学习书单前言前段时间周老师在我们的Advanced Machine Learning课程上,推荐了一些机器学习的书籍,这里大概整理一下。第一阶段入门级的书有两本。一本是CMU,ML系的Tom Mitchell所著的《Machine Learning》,这也是第一本机器学习的专门性教材。另一本就是周老师的《机器学习》这两本书任选一本即可。第二阶段进阶篇的两本ESL《(The
2017-10-22 16:32:32 16950 6
原创 1031. Hello World for U (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1031题目大意:将所给字符串按u字形输出,注意长和宽解题思路:先求n1,n2,n3,然后将所给字符串的每个字符按要求格式存入二维数组,最后输出即可代码如下:#include<iostream>#include<cstring>using namespace std;int main(){
2017-09-13 17:50:20 514
原创 1027. Colors in Mars (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1027解题思路:该题考察进制转换,比较简单代码如下:#include<iostream>#include<cstring>using namespace std;char numtochar(int x){ if(x<=9) return x+'0'; els
2017-09-13 17:49:42 415
原创 1026. Table Tennis (30)
题目链接:https://www.patest.cn/contests/pat-a-practise/1026解题思路:这道题坑很多,万恶的vip!!!写了好久还是有测试点不通过。下面的AC代码是参考的网上大神的版本代码如下:#include <cstdio>#include <vector>#include <algorithm>#include <cmath>using namespac
2017-09-13 17:48:56 519
原创 1022. Digital Library (30)
题目链接:https://www.patest.cn/contests/pat-a-practise/1022题目大意:由所给信息查询馆藏图书解题思路:1.图书的所有信息都用string表示 2.关键字字段用string类型的vector表示,所有在关键字输入的时候要进行分割 3.注意处理cin与getline同时使用是带来的冲突代码如下:#include <iostream>#include
2017-09-13 17:48:10 404
原创 1011. World Cup Betting (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1011代码如下:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;char wtl[3]={'W','T','L'};int no[3]={0,1,2};double temp[3];do
2017-09-05 09:05:51 449
原创 1010. Radix (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1010题目大意:给出两个数a,b,和其中一个数的进制,判断另一个数能否在某进制下与其相等。解题思路: 要注意的点: 1.数值使用long long类型,不然会溢出 2.使用二分法查找,不然会超时代码如下:#include<cstring>#include<algorithm>#inclu
2017-09-05 09:05:14 417
原创 PAT甲级 1006. Sign In and Sign Out (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1006题目大意:给出每个人来的时间和走的时间,找出其中来到最早的人和走的最晚的人代码如下:#include <iostream>#include <cstring>#include <string>using namespace std;int main(){ string mins
2017-09-05 08:56:24 412
原创 指向常量的指针、常量指针傻傻分不清楚
指向常量的指针、常量指针傻傻分不清楚常量指针(const pointer)指的是指针本身是个常量,因此常量指针必须初始化,且初始化之后,他的值(地址)不能改变,也就是说该指针只能一直指向初始化的那块地址。指针的值不能改变,但是指针所指向的值能否改变视情况而定。如下例:int i=0;int *const pi=&i;//pi为常量指针,且pi一直指向i所在的那块地址。此时i的值可变const d
2017-08-23 22:20:47 348
原创 指针与引用,取地址符与解引用符
指针与引用,取地址符&与解引用符*引言探讨一下指针、引用、以及具有两种意思两个符号&和*引用引用相当于为对象取一个别名,引用本身不是对象。定义方式:int x=4;int &y=x;//y为变量x的引用,变量x有了另外一个名字y,可以通过y来间接访问x指针指针也可以实现对对象的间接访问,指针与引用有以下区别:指针本身就是对象指针无需在定义时赋初值1.使用指针获取对象的地址int i=12;
2017-08-14 21:12:17 3607
原创 1040. Longest Symmetric String (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1040题目大意:求一个字符串的最大回文子串的长度解题思路:定义一个判断回文字符串的函数遍历所有子串,找到最长的回文子串代码如下:#include <iostream>#include <cstring>using namespace std;bool isSymmetric(strin
2017-08-10 21:46:26 348
原创 1039. Course List for Student (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1039题目大意:给出每门课选课的学生,查询每个学生所选的所有课解题思路:学生的学号使用数字来存储,便于处理代码如下:#include <algorithm>#include <vector>#include <cstdio>using namespace std;int getstno
2017-08-10 21:45:47 355
原创 1038. Recover the Smallest Number (30)
题目链接:https://www.patest.cn/contests/pat-a-practise/1038题目大意:给出若干个数字,可以将这些数字随意排序,使得最后拼接处的数字最小。解题思路:最开始是想通过string字符串表示数字,将所有字符串升序排序,但是结果是不行的。比如32和321,直接排序的话得到32321,但是32321明显小于32132。所以这样排序不正确。对于两个字符串a和b
2017-08-10 21:45:12 336
原创 1037. Magic Coupon (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1037题目大意:给两个数列A和B,A、B中格挑一个元素相乘,一直重复此动作,每个元素只能用一次,把每次的乘积累加,计算所能达到的最大和。解题思路:先将两个数列排序分别计算所有的负数*负数和正数*正数累加起来代码如下:#include <iostream>#include <algorit
2017-08-10 21:44:34 348
原创 1071. Speech Patterns (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1071题目大意:给出一个字符串,以回车结束。找出字符串中的非字母和数字字符,然后将整个字符串在这些非字母数字字符出切割,得到若干个由字母数字组成的单词,找出数量最多的单词解题思路:map的使用isalnum()和tolower()的使用代码如下:#include <iostream>#in
2017-08-09 10:48:12 335
原创 1048. Find Coins (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1048题目大意:给出一个数列和一个值m,找出数列中的两个数v1,v2使得v1+v2=m。并且v1<=v2,若不唯一,输出v1最小的那个解题思路:先将数列排序定义i,j,从数列的左侧和右侧开始扫描,并计算临时和和较大j前移,和较小i后移,知道找到合适的i,j代码如下:#include <io
2017-08-09 10:47:28 287
原创 1046. Shortest Distance (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1046题目大意:一个圈上有n个点,相邻点之间的距离已知,求任意两点之间的最短距离。其实就是圈上两个点之间的顺时针距离和逆时针距离的最小者。解题思路:见代码注释解题报告:#include <iostream>#include <cstdio>using namespace std;int
2017-08-09 10:46:33 335
原创 1041. Be Unique (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1041题目大意:给个数列,求其中第一个只出现一次的数代码如下:#include <iostream>using namespace std;int cnt[10001]={0};int nums[100001];int main(int argc, char const *argv[])
2017-08-09 10:45:15 369
原创 C++中声明与定义的关系
C++中声明与定义的关系分离式编译C++支持分离式编译机制,允许将程序分割为多个文件,每个文件独立编译。如果要在多个文件中使用同一个变量,必须将声明和定义分离。此时,变量的定义只能出现在一个文件中,而其他用到该变量的文件必须对其进行声明,绝不能重复定义。声明和定义声明是使名字为程序所知,而定义负责创建与名字关联的实体。变量的声明规定了变量的类型和名字,而定义除此之外还会申请存储空间示例exte
2017-08-08 21:25:12 332
原创 1020. Tree Traversals (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1020题目大意:已知树的后序遍历和中序遍历,求该树的层次遍历解题思路:先根据后序和中序确定树的结构再进行层次遍历即可代码如下:#include<iostream>#include<vector>#include<queue>using namespace std;struct Nod
2017-08-07 09:08:31 343
原创 1021. Deepest Root (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1021题目大意:找出树中能使树的深度达到最大的根。解题思路:定义深度优先DFS(int v,int high),该函数用来找离v点最远点的集合先任取一点v,进行dfs找到离v点最远的一部分点即为集合set1,这些点是最终要求的点的子集。从set1中任选一点,在进行一次DFS,得到set2。
2017-08-07 08:58:25 348
原创 1018. Public Bike Management (30)
题目链接:https://www.patest.cn/contests/pat-a-practise/1018题目大意:先求最短路径,若有多条最短路径,优先选择需要从源点运出自行车最少的那条,若还相同的话,选择需要收回到源点的自行车最少的那条,题目保证结果唯一。解题思路:Dijkstra算法求最短路径,并保存下来DFS遍历所有的最短路径,求出这些路径中send、back最小的那个。#inclu
2017-08-07 08:57:17 328
原创 1017. Queueing at Bank (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1017题目大意:类比操作系统里的先来先服务解题思路:要模拟先来先服务,那么先对所有的人按照到来的先后顺序排序对排序后的所有人逐个选择窗口,计算需要等待的时间对于每个人,选择空出来最早的那个窗口接受服务,然后更新该窗口下次空闲出来的时间和该人的等待时间。 到的时候,最早要空出来的那个窗口都还没
2017-08-06 21:54:45 511
原创 1016. Phone Bills (25)
题目连接:https://www.patest.cn/contests/pat-a-practise/1016题目大意:给出一系列的电话记录,这些记录每个通话接通的时刻和挂断的时刻。从中找出完整的通话记录(同时含接通时刻和挂断时刻),然后输出,输出按照姓名排序,同一个人的按照时间先后排序解题思路:思路不难,但比较繁琐。将所有记录按照姓名排序,姓名相同的按照时间排序。然后从记录中挑出符合条件的记录对。
2017-08-05 19:23:51 347
原创 1007. Maximum Subsequence Sum (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1007题目大意:求一个数列的最大子列和,并输出该子列的起点和终点元素解题思路:最大和maxsum和临时和curSum初始化为0。临时和变大时更新maxsum,临时和小于0的时候,将其更新为0。end的更新比较好理解,end在cursum>maxsum的条件下随着i一直递增start的更新稍微
2017-08-05 14:25:22 373
原创 1012. The Best Rank (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1012题目大意:每个人的成绩分别按三门课的成绩和平均成绩排名,输出要查找的学生的最好排名和该排名对于的科目。解题思路:用0,1,2,3分别表示A,C,M,E用三门课的总分表示平均分(就不要考虑四舍五入的问题了)在学生结构体中定义rank[4]分量,表示该学生的A,C,M,E的排名先计算每个
2017-08-05 13:38:45 383
原创 1014. Waiting in Line (30)
题目链接:https://www.patest.cn/contests/pat-a-practise/1014题目大意:银行有N个窗口,每个窗口前的黄线内最多排队M个人,有K个人要去办理业务,每个人要办理的时间已知。排队的规则跟现实生活中的排队类似,黄线内没有位置的时候,在线外候着;黄线内有位置的时候,选择队列最短的去排队,若有两个队长度相同,则选择队列序号小的排入。最后计算每个人办理完结束的时间。
2017-08-05 13:21:28 333
原创 1035. Password (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1035题目大意:如果密码中含有1、0、l、O,将其分别替换为@、%、L、o。代码如下:#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(int argc, char cons
2017-08-03 08:56:09 460
原创 1032. Sharing (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1032题目大意:找出两个链表相汇处的结点解题思路:先遍历第一个链表,将其中所有节点标记为已访问再遍历第二个链表,在遍历过程中找到的第一个已访问的结点即为所求注意:想要通过判断next域中出现两次的结点是不可行的,因为测试用例中有些输入重复出现了多次来防止这种”小聪明”的方法代码如下:#in
2017-08-03 08:54:05 445
原创 1013. Battle Over Cities (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1013题目大意:给出一个图,然后给出一部分待检测的结点序号,判断将这些结点删除之后,对剩下的图要添加几条边才能成为连通图。解题思路:要判断一个图要添加几条边才能成为连通图,只需要统计该图有几个连通分量。n个连通分量需要n-1条边求图的连通分量,可以使用图遍历的方法。从一个结点开始深度优先地遍历
2017-08-03 08:46:05 332
原创 PAT甲级 1008. Elevator(20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1008题目大意:电梯每上一层需要6秒,下降一层需要4秒,某一层需要停下的话要停5秒,给出要停下的层次序列,求总花费时间。解题思路:模拟电梯的升降即可代码如下:#include<iostream>using namespace std;int main(){ int n; cin
2017-08-02 12:24:14 356
原创 1005. Spell It Right (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1005题目大意:对正整数N,将其各位数字相加得到和sum,然后输出sum的每位数字的英文单词代码如下:#include<iostream>using namespace std;char num[10][6]={"zero","one","two","three","four","five",
2017-08-02 12:22:29 300
原创 1001. A+B Format (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1001题目大意:输出A+B的标准格式代码如下:#include<iostream>using namespace std;int result[30];char p[30];int main(){ int a,b,tmp,len; len=0; cin>>a>>b;
2017-08-02 12:19:59 534
原创 PAT甲级 1029. Median (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1029题目大意: S1和S2为两个递增数列,求将两个数列合并后的非递减序列的中位数解题思路:定义一个大的数组buf[],将S1和S2都保存到buf[]中,然后将buf[]排序,即可很容易得到中位数代码如下:#include <iostream>#include <cstdio>#include
2017-08-02 10:57:22 412
原创 PAT甲级 1028. List Sorting (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1028题目大意:根据输入要求将所给学生按照id、name、grade排序,按姓名和分数排序时若出现相同的情况,则将相同的按照id升序排列。解题思路:使用sort()函数,自定义比较方式cmp1代码如下:#include <iostream>#include <cstdio>#include <
2017-08-02 10:54:29 417
原创 1025. PAT Ranking (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1025题目大意:给定N组学生,将N组学生按成绩分别进行组内排序和整体排序,输出每个学生的整体名次,组别,组内名次解题思路:注意处理分数相同的名次相同代码如下:#include <iostream>#include <cstdio>#include <algorithm>using nam
2017-08-02 10:52:34 350
原创 1024. Palindromic Number (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1024题目大意:判断a是否是回文数,若不是则计算a+(a的逆置)是否是回文数,如此迭代。若迭代k轮之后仍不是回文数,输出第k轮的a+(a的逆置)解题思路:注意溢出的问题,long long也是会溢出的,会有两个测试点不通过,所以要用字符串存储数字字符串可以使用函数reverse()来进行逆置
2017-08-01 20:21:55 741
原创 1023. Have Fun with Numbers (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1023题目大意:判断a和2*a中每一个数字的个数是否相同。解题思路:为便于统计数字的个数使用字符串保存数字a,然后计算2*a再统计两者中0,1,···9的个数比较两者中每个数字的个数是否相同代码如下:#include <iostream>#include <string>using n
2017-08-01 20:20:58 352
原创 1019. General Palindromic Number (20)
题目链接:https://www.patest.cn/contests/pat-a-practise/1019题目大意:给定正整数N和b,判断N的b进制数是不是回文数解题思路:函数Ninb(int n,int b),返回值为n的b进制数的逆置,判断此值就可以判断n的b进制数是否是回文数函数isPalindromic(vector num),用来判断num是否是回文数代码如下:#include
2017-08-01 20:20:11 351
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人