
PAT(Advanced C++版)
to'get'her
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PAT(甲级)1104
题意:求出所有的子段和。题解:双指针法。code in view#include<bits/stdc++.h>using namespace std;int n;int main(){ cin>>n; double temp,res=0; for(int i=1;i<=n;i++){ cin>>temp;...原创 2019-11-13 16:59:18 · 161 阅读 · 0 评论 -
PAT(甲级)1070
题意:给出N种货物,市场需求为D,如何安排使利润最大题解:求出单位重量货物的利润,sort排序。注意点:都要开浮点数code in view#include<bits/stdc++.h>using namespace std;const int maxn=1e5+10;int n;double d;struct node{ double amount,pric...原创 2019-11-13 16:37:49 · 177 阅读 · 0 评论 -
PAT(甲级)1074
题意:给出一条单链表,任意给定K,按照每K个节点就将它翻转,最后不足K个节点的不翻转,输出链表顺序。题解:链表表示法,开一个vector保存要翻转的元素,将它逆序存进ans结构体数组中,最后修改一下前后链的地址(注意到ans数组中的address是一致的,将next修改即可),输出。注意点:翻转后前后链地址需要作出相应的改变。code in view#include<bits/std...原创 2019-11-13 14:19:03 · 251 阅读 · 2 评论 -
PAT(甲级)1066
题意:将一组数插进AVL树中,输出这棵树的根节点的值。题解:AVL树四种旋转+AVL树的插入。注意点:数据结构基础题code in view#include<bits/stdc++.h>using namespace std;int n;struct node{ int val; node *left,*right;};node* RightRotat...原创 2019-11-12 16:21:33 · 162 阅读 · 0 评论 -
PAT(甲级)1116
题意:格式输出题注意点:如果已经访问过并且存在,再次访问时输出Checkedcode in view#include<bits/stdc++.h>using namespace std;unordered_map<int,int> mp;int vis[10005];int n;bool isprime(int x){ if(x==1) return...原创 2019-11-12 10:47:30 · 145 阅读 · 0 评论 -
PAT(甲级)1123
题意:给出一组数据,将他们插入到AVL树中,答案输出AVL树的层序遍历以及它是否是完全二叉树。题解:一道显然的数据结构题,AVL树的四种旋转操作,树的插入,层序遍历,难点是如何判断完全二叉树,由于是层序遍历,如果遍历到一个空节点,那么它以后的节点应该全部为空,如果发现一个节点不为空,那么它就不是完全二叉树。注意点:数据结构写正确,四种旋转操作和插入要写正确,代码量较大。code in vie...原创 2019-11-12 10:28:56 · 185 阅读 · 0 评论 -
PAT(甲级)1038
题意:给出一些数字,前后拼接使得其值最小。题解:重写sort的cmp函数,快速排序的神奇应用。注意点:去掉前导零之后如果字符串为空则书输出0code in view#include<bits/stdc++.h>using namespace std;const int maxn=1e4+10;int n;string s[maxn];bool cmp(string a...原创 2019-11-11 23:14:38 · 98 阅读 · 0 评论 -
PAT(甲级)1146
题意:给一张图,给出一些遍历顺序,输出其中不满足拓扑排序的index。题解:一道拓扑排序的简单题,关键抓住出度与入度,当前点可以加入结果的条件是入度为0,跑一边图,判断点的入度是否为0,不为0则非法。注意点:基础25分题,注意细节即可。code in view// topological order#include<bits/stdc++.h>using namespace...原创 2019-11-11 20:17:16 · 166 阅读 · 0 评论 -
PAT(甲级)1145
题意:哈希–平方探测法,求数能否插入和数的平均查找次数。注意点:平均查找次数中平方项范围[0,size],遇到空白的直接退出。code in view#include<bits/stdc++.h>using namespace std;const int maxn=1e4+10;int sz,n,m;int vis[maxn];bool isprime(int x){...原创 2019-11-11 20:10:57 · 228 阅读 · 0 评论 -
PAT(甲级)1144
题意:给一串数,找到最小的未出现的正整数。题解:注意数据范围只有100000个数,先给它从小到大排个序,找出最小的大于等于0的数a,从a前面的一个数开始,每次增加1,至多100000,肯定会出现没有出现过的正整数,由于数据int范围,可以map去保存。注意点:数组从1开始取,方便往前取1个时,a[0]正好是0.code in view#include<bits/stdc++.h>...原创 2019-11-11 20:06:47 · 165 阅读 · 0 评论 -
PAT(甲级)1122
题意:给出一张图,再给出M条路线,判断其是否是哈密顿圈(经过所有顶点不重复)。题解:三个判断:1.首尾两点要一样,2.长度为n+1,且除了出发点,其他所有的点必须只能出现1次,3.必须连成圈注意点:范围开大一点(205被卡了)code in view#include<bits/stdc++.h>using namespace std;const int maxn=2005;...原创 2019-11-11 19:59:35 · 103 阅读 · 0 评论 -
PAT(甲级)1121
题意:给出N对夫妇,再给出M个参加party的人,求出其中单身狗的个数。题解:map(unordered_map)容器的应用,将M个人中单身人数(除掉夫妇)+夫妇中只有一人出席的人数。注意点:注意序号从0开始,所以将序号+1,以防出现映射到0的情况,造成出错。code in view#include<bits/stdc++.h>using namespace std;con...原创 2019-11-11 19:54:00 · 206 阅读 · 0 评论 -
PAT(甲级)1147
题意:给出完全二叉树的层序排列,判断它是大根堆还是小根堆或者不是堆,再将原序列转为后序排列输出。题解:首先判断是不是堆,可以dfs看子节点与父节点的大小关系,或者直接for循环判断,层序转后序直接dfs一下即可。注意点:判断堆时逻辑关系要清楚,总体来说事一道简单的30分题。code in view// 层序转后序#include<bits/stdc++.h>using na...原创 2019-11-11 19:46:49 · 186 阅读 · 0 评论 -
PAT(甲级)1060
题意:两个浮点数规范化判断是否相等。题解:由于长度最大有100位,只能用字符串存,先规范化浮点数,规范化要求:去除前导零,得到有效位数,有效位的第一位不可以为0,(即题意中的d[1]),得到有效指数,判断两者是否相等即可。注意点:测试数据前导零,以及特殊点0的判断,输出格式一定要有n个数,不足用零去补。code in view#include<bits/stdc++.h>us...原创 2019-11-10 16:06:15 · 143 阅读 · 0 评论 -
PAT(甲级)1155
题意:给出一棵完全二叉树,判断它是大根堆还是小根堆或者不是堆,并且要输出所有到叶子节点的路径。题解:一道30分的题,总体来说不难,掌握二叉树的遍历,对该树遍历两次,第一次判断是大根堆还是小根堆或者不是,第二次遍历输出路径。注意点:初始点要加到路径中去,注意遍历到边界的问题,如何判断已经访问到叶子节点,以及注意从右儿子开始遍历。code in view#include<bits/std...原创 2019-11-10 10:31:54 · 139 阅读 · 0 评论 -
PAT(甲级)1154
题意:给出一张图,每个点有一个颜色,一条边上的两个点要求不同色,同色输出No,满足条件输出一共使用了多少颜色。题解:暴力搜索每一条边判断。注意点:一道简单的图的遍历题目,没有大的坑点。code in view#include<bits/stdc++.h>using namespace std;const int maxn=1e4+10;int n,m,k;vector&...原创 2019-11-10 00:22:00 · 211 阅读 · 0 评论 -
PAT(甲级)1153
题意:给出N个人的信息和分数,M个询问,询问1:输出符合给定等级的人,按分数,字母序排序,询问2:输出给定site中的人数和总分数,询问3:输出满足给定年月日的site和人数信息,按人数,site排序解题:暴搜复杂度O(N*M),相对较复杂的模拟题,对每种询问遍历即可,反正数据量小,注意询问3采用unordered_map更快,毕竟map白白多出了logN的复杂度。注意点:复杂模拟,输出格式,...原创 2019-11-10 00:00:56 · 199 阅读 · 0 评论 -
PAT(甲级)1152
题意:给出一个长度L的数字串,求出其首次出现的长度为K的素数。方法:首先K是一个小于10的数,所以按顺序取K个连续数字,转换为整形,判断该数是否为素数。注意点:输出格式,长度一定要为K,有前导零要把前导零加上。code in view#include<bits/stdc++.h>using namespace std;int l,k;char num[1005];bo...原创 2019-11-09 23:14:11 · 188 阅读 · 0 评论 -
PAT(甲级)1065
注意点:给出的ABC为long long范围,可能会产生溢出。技巧:运用正数相加溢出和变为负数,负数相加溢出和变为正数进行处理。代码如下:#include <cstdio>using namespace std;int main() { int n; scanf("%d", &n); for(int i = 0; i < n; i++) ...原创 2019-08-15 17:50:15 · 128 阅读 · 0 评论 -
PAT(甲级)1090
解题思路:求树的层次。注意点:采用BFS标记树的层次后,求解最大个数时,如果maxsize==0,此时需要更改为1,因为此时根节点就是符合条件的点。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define C...原创 2019-08-16 10:45:08 · 204 阅读 · 0 评论 -
PAT(甲级)1085
注意点:数据类型long long,二分法查找(upper_bound函数)。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define CLR(a) memset(a, 0, sizeof(a))using ...原创 2019-08-16 14:05:51 · 156 阅读 · 0 评论 -
PAT(甲级)1052
解题注意点:对于不在链表中的节点作抛弃处理,如果没有符合的节点输出0 -1.代码如下:#include<bits/stdc++.h>#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define CLR(a) m...原创 2019-08-16 17:06:11 · 206 阅读 · 0 评论 -
PAT(甲级)1068
解题思路:01背包+最小路径输出代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define CLR(a) memset(a, 0, sizeof(a))using namespace std;int dp[1...原创 2019-08-17 10:38:46 · 499 阅读 · 0 评论 -
PAT(甲级)1091
解题思路:flood_fill,由二维变为三维的,解题思路不变,给出DFS和BFS代码进行比较。注意点:使用DFS会导致最后两个测试点过不了(递归太深,爆栈)此处应该使用BFS进行搜索DFS版本(最后两个测试点无法通过):#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long...原创 2019-08-17 17:39:19 · 219 阅读 · 0 评论 -
PAT(甲级)1071
简单的字符串处理。解题思路:map容器(注意点写在代码注释里)。听说还有isalnum()和tolower()函数,以后有时间再简化一下代码。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 2147483647#define CLR...原创 2019-09-02 22:38:29 · 123 阅读 · 0 评论 -
PAT(甲级)1048
解题思路:N的规模有10的5次方,暴力求解的话肯定会超时,注意到本题的M只有10的3次方的大小,因此枚举M,对M进行拆分不会超时,具体解法使用vis数组记录每数字出现的次数,然后对M进行枚举。(如果出现v1==v2的情况,一定要满足vis[v1]>=2这个条件)代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-...原创 2019-08-12 11:03:32 · 125 阅读 · 0 评论 -
PAT(甲级)1094
解题思路:记录树的层次,采用BFS进行搜索,同时更新每一个节点所在的层次,最后统计相同层次节点个数取最大值,输出最大值和层次。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define CLR(a) memset...原创 2019-08-15 17:49:35 · 143 阅读 · 0 评论 -
PAT(甲级)1040
(LSS)解题思路:本题考查动态规划,暴力求解时间复杂度O(n^3),可能会超时。dp[i][j]==0表示字符串S从i到j不是一个回文子串,dp[i][j]==1表示字符串S从i到j是一个回文子串。建立状态转移方程:dp[i][j]=dp[i+1][j-1] , S[i]==S[j],dp[i][j]=0 , S[i] !=S[j],1.初始化边界:dp[...原创 2019-08-15 16:42:23 · 132 阅读 · 0 评论 -
PAT(甲级)1093
解题思路:找到字符串中所有A的位置,统计A左边字符P的个数为nump,A右边字符T的个数numt;结果ans+=nump*numt,最后不要忘记取模。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define ...原创 2019-08-08 09:44:00 · 109 阅读 · 0 评论 -
PAT(甲级)1020
题目:PAT1020Tree Traversals题目描述:给出一棵二叉树的中序遍历和后序遍历,求其层序遍历。解题方法:对于求解层序遍历除了使用BFS之外,还可以对每一个节点进行标号,最后对标号进行排序输出。(标号的大小不一定是连续的)代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ...原创 2019-07-27 22:49:49 · 230 阅读 · 0 评论 -
PAT(甲级)1120
解题方法:set容器注意点:输出格式,空格。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define N 100000#define CLR(a) memset(a, 0, sizeof(a))using...原创 2019-08-16 17:06:51 · 108 阅读 · 0 评论 -
PAT(甲级)1069
注意点:相等时输出 N - N = 0000,当输入为6174时,输出7641 - 1467 = 6174.代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define N 100000#define CLR(a...原创 2019-08-05 09:29:10 · 173 阅读 · 0 评论 -
PAT(甲级)1092
解题思路:将字符串的ascii码作为下标,num数组记录每个字符出现的次数,遍历第二个字符串,每出现一次就减去一次。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define N 100000#define C...原创 2019-08-05 10:46:13 · 171 阅读 · 0 评论 -
PAT(甲级)1084
题意:按照查找顺序输出坏掉的键盘字母(大写)注意点: 1. 大小写不敏感2.按照查找顺序依次输出坏掉的大写字母解题方法:将小写字母全部装换成大写字母,用num数组记录字母是否缺失,并且在每次遍历查找时去检查是否之前已经出现过。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll l...原创 2019-08-05 10:26:45 · 219 阅读 · 0 评论 -
PAT(甲级)1061
字符串的处理。注意点:第一个是相同的大写字母,第三个是字母。使用isdigit()函数和isalpha()函数简化代码。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define N 100000#defi...原创 2019-08-04 15:20:38 · 109 阅读 · 0 评论 -
PAT(甲级)1058
简单题:注意进位。#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define N 100000#define CLR(a) memset(a, 0, sizeof(a))using namespace std;int ...原创 2019-08-04 14:38:58 · 147 阅读 · 0 评论 -
PAT(甲级)1054
map容器的应用,由于输入的数据较大,不考虑使用数组记录出现次数,采用map<int,int>建立映射,相同值则+1.#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define N 100000#define...原创 2019-08-03 15:59:35 · 273 阅读 · 0 评论 -
PAT(甲级)1041
vector p[10005],输入值作为下标,保存输入顺序。再从1-10000进行遍历,找出只出现过一次的数值,并比较输入顺序,最后保留输入顺序最小的值。#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define N 10...原创 2019-08-03 15:47:19 · 157 阅读 · 0 评论 -
PAT(甲级)1100
解题思路:map容器,atoi()函数。注意输入为13的整数时,只需输出高位即可。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define N 100000#define CLR(a) memset(a,...原创 2019-08-01 17:43:45 · 127 阅读 · 0 评论 -
PAT(甲级)1089
解题思路:模拟归并排序的过程,给出下一步操作。代码如下:#include<bits/stdc++.h>#define lowbit(x) ((x)&(-(x)))#define ll long long#define INF 0x3f3f3f3f#define CLR(a) memset(a, 0, sizeof(a))using namespace std;i...原创 2019-08-20 15:57:57 · 245 阅读 · 0 评论