编程
Freedomer_
这个作者很懒,什么都没留下…
展开
-
(自用随笔)PAT A1022(30分)qsort问题待解决
思路:定义一个结构体来存书,重点在格式化输入。本来不想用string的,但是发现char*还是麻烦,就用了string,最后结果也没有多慢,最后一个测试用例270ms,在没用map和set优化的情况下还可以了。。。如果会熟练使用map和set,可以参考其他人的博客,有更快的算法。做的时候遇到了几个坑,首先我一开始用的是qsort函数,但是对我这个结构体排序完之后,里面的string居然丢失...原创 2020-04-20 21:07:44 · 142 阅读 · 0 评论 -
(自用随笔)PAT A1021(25分)
暴力搜索,测试点3用了1200ms。。。。尴尬。测试点2比较坑,连通分支数大于2,而我一开始的代码是,一旦连通分支大于1则跳出。。。暴力思路:先把节点1作为根,用一次图的遍历模板,将连通分支数算出来,若大于1则输出Error;若等于1,则把剩下的节点分别作为根,遍历,算出各自的最大深度,最后输出最大深度的节点。优化的思路请参考其他博客~#include <iostream&...原创 2020-04-20 11:33:47 · 181 阅读 · 0 评论 -
(自用随笔)PAT A1018 (20分)
没做过类似的题的话,题目挺难懂的。我的思路是——自行车带走和带回必有一个为0,然而这个是错误的,只能过一半用例。正确的思路应该是一个动态的过程,而不是直接算所有节点的差额。我认为正确的思路:首先通过总体差额算出最短路径,然后从节点0开始走此路径,遇到大于完美值的节点时,拿走多余的自行车暂存起来;遇到小于完美值的节点时,看看暂存处是否有自行车,若没有则从起始处拿来补上(这是需要输出的第一个值);...原创 2020-04-19 20:52:52 · 140 阅读 · 0 评论 -
(自用随笔)PAT A1014
一道queue的时间模拟题。最后一个样例没过,不想再改了~思路是,写一个处理函数,每次处理一个顾客,让他的处理时间归零,然后递加当前时间now,把now存入finish数组中。有几个坑,首先第一遍题目我读错了,只有开始服务时间在17点之后的顾客才会被sorry,而结束时间在17点之后的正常输出。第二个坑是会出现几个顾客同时处理完毕的情况,大概有2个测试用例。在写程序的过程中也要注意...原创 2020-04-19 13:29:57 · 180 阅读 · 0 评论 -
(自用随笔)PAT A1013
一个DFS的题,一开始当做并查集的题来做了。。思路就是对每个没有被访问过的节点进行图的遍历,如果只有一个连通分支,则只需要DFS一次就可以;若有多个连通分支,就会进行多次DFS。在空间允许的情况下最好使用一个临时二维数组来存储每次去掉一个节点后的图,遍历完恢复就可以了。#include <iostream>#include<stdio.h>using n...原创 2020-04-19 09:48:54 · 162 阅读 · 0 评论 -
(自用随笔)PAT A1010
计算一个数是否能通过某个进制转换为另一个数的问题。思路就是把输入的数据转化为全数字,再计算number大小。在计算第二个不知道进制的数时,从最低位开始计算,一旦数字超过了number1,就让进制加一,重新计算,知道数字大小相等。网上比较高效的方法是二分法找进制,我用的笨方法,从2开始往上找。坑点就是数字可能会超过int的范围,而且可能会超过long long int的范围。当溢出时,数...原创 2020-04-18 19:16:18 · 148 阅读 · 0 评论 -
(自用随笔)PAT A1009
这道题的输出格式有点迷,题目说的是与输入一致,应该是幂次数的顺序一致。#include <iostream>#include <stdio.h>#include <queue>using namespace std;int K1,K2;float total[2010];bool isvalid[2010];int num;queue&...原创 2020-04-18 19:04:00 · 136 阅读 · 0 评论 -
(自用随笔)PAT A1012
一个排序题,需要对4个分数4次排序,每次排序完成后将当前名次记录到grank数组中。做这个题之前参考了算法笔记的思路,但是它用了静态数组直接开了一个一百万*4的int数组,算了下要占15M,典型的空间换时间。。我比较喜欢动态开数组,所以自己写了一个。不过关于成绩相等的情况题目没有说,这有点蛋疼,看了别人的博客才知道,98、90、90、88这种情况要按1,2,2,4来算。#include...原创 2020-04-18 13:40:55 · 130 阅读 · 0 评论 -
(自用随笔)PAT A1005 Spell It Right
#include <iostream>#include <map>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;map<int,char*> m;int N = 0;void init();int...原创 2020-04-16 20:06:25 · 139 阅读 · 0 评论 -
(自用随笔)PAT A1006 Sign In and Sign out
#include <iostream>#include <stdio.h>using namespace std;int M;int early = 23*3600 + 59 * 60 + 59;int late = 0;int p1;int p2;int main(){ scanf("%d",&M); char **per...原创 2020-04-16 20:01:16 · 141 阅读 · 0 评论 -
(自用随笔)PAT A1004 Counting Leaves
#include <stdio.h>#include <iostream>#include <stdlib.h>#include <queue>#include <string.h>using namespace std;int N,M;int maxlevel = -1;int num[105] = {0};st...原创 2020-04-16 15:12:12 · 153 阅读 · 0 评论 -
(自用随笔)PAT A1007 Maximum Subsequence Sum
这题通过率低的可怕。。。确实有几个坑。1、首先题目要求输出的是最大子序列的首元素和尾元素,而不是下标。给的测试样例正好是元素也是下标,容易被误解(我就看错了)。2、题目中没有说数字有没有0,所以要考虑进去;我写的程序里面,把0当做正数来处理,比较方便。#include <iostream>#include <stdio.h>using namespac...原创 2020-03-14 11:19:32 · 178 阅读 · 0 评论 -
(自用随笔)PAT A1047 Student List for Course
这个题费了半天劲才做出来,有些知识点还是没有掌握。第二个测试点过不了,不知道哪里出问题了。#include <iostream>#include <stdio.h>#include <vector>#include <algorithm>#include <cstring>using namespace std;i...原创 2020-03-13 18:42:15 · 124 阅读 · 0 评论 -
(自用随笔)PAT A1029 Median
听说这个题原本内存限制1.5MB,太严格了。。逼着你去用归并排序。我写的时候没有想到,直接暴力存数组,然后从头一个一个比较,直到(n+m)/2的位置结束。但思想还是归并。#include <iostream>#include <stdio.h>#include <algorithm>using namespace std;int N,M;lon...原创 2020-03-11 14:09:01 · 168 阅读 · 0 评论 -
(自用随笔)PAT A1107 Social Clusters
很经典的并查集题目,写的时候还是不熟练,遇到了个坑,看了别人的代码才反应过来。isRoot数组递增应该在输入并且合并完所有元素之后才执行,不然会出错。。因为每个结点的根节点在输入完之前都是有可能变的。#include <iostream>#include <stdio.h>#include <algorithm>#define MAXN 1005...原创 2020-03-11 13:50:24 · 113 阅读 · 0 评论 -
(自用随笔)PAT A1043 Is It a Binary Search Tree
有两个样例没过。。//PAT1043#include <stdio.h>#include <stdlib.h>int N;int origin[1005] = {0};int t_index = 0,flag = 1;typedef struct node{ int data; struct node* lchild; str...原创 2020-03-10 14:49:46 · 115 阅读 · 0 评论 -
(自用随笔)PAT A1034 Head of a Gang
#include <stdio.h>#include <stdlib.h>#include <string.h>int N,K;int father[2005];int isRoot[2005] = {0};int sum[2005] = {0};int numb = 0;int gun[2005] = {0};typedef struc...原创 2020-03-10 14:45:25 · 130 阅读 · 0 评论 -
(自用随笔)PAT A1032 Sharing
#include <stdio.h>#include<stdlib.h>struct Node{ char data; int next;} node[100000];int main(){ int add1,add2,N; scanf("%d %d %d",&add1,&add2,&N); ...原创 2020-03-10 14:42:52 · 120 阅读 · 0 评论 -
(自用随笔)PAT A1030
#include <iostream>#include <stdio.h>#define MAXN 505#define MAXINT 10000using namespace std;int N,M,S,D;int G[MAXN][MAXN];int cost[MAXN][MAXN];int c[MAXN];int d[MAXN];bool vi...原创 2020-03-10 14:41:01 · 106 阅读 · 0 评论 -
(自用随笔)PAT A1025 PAT Ranking
//PAT A1025#include<stdio.h>#include<string.h>#include<stdlib.h>struct Student{ char name[13]; int score; int local; int local_rank; int total_rank;};//i...原创 2020-03-10 14:38:35 · 112 阅读 · 0 评论 -
(自用随笔)PAT A1024
涉及大数运算,本人用的很笨的方法,当数字长度超过10时,分两个char数组将数字长度大于10的部分和小于10的部分分开存起来,然后转成long long型大整数再运算。只过了前六个样例,改不动了。。不过收获很多:#include <iostream>#include <stdio.h>#include <string>#include <cst...原创 2020-03-10 14:05:22 · 184 阅读 · 0 评论 -
(自用随笔)PAT A1017 Queueing at Bank
第一个思路就是模拟,每次模拟时间加一秒。但写出来发现太麻烦了。细节太多,结果错了也找不到错误的地方。。。。#include <iostream>#include <stdio.h>#include <algorithm>#include <stdlib.h>#include <vector>#include <que...原创 2020-03-10 12:59:35 · 162 阅读 · 0 评论 -
(自用随笔)PAT A1020 Tree Traversals
#include <iostream>#include <queue>#include <stdio.h>using namespace std;int N;int post[31];int in[31];int root;int num=0;struct tree{ int lchild; int rchild;}T...原创 2020-03-10 12:48:33 · 118 阅读 · 0 评论 -
(自用随笔)PAT A1003 Emergency
#include <stdio.h>#include <stdlib.h>#define Maxn 100000000int N,M,C1,C2;int wei[505];int w[505]; //到点v的最大点权之和int G[505][505];int num[505]; //到点v的最短路径条数int d[5...原创 2020-03-10 12:42:03 · 121 阅读 · 0 评论 -
刷codeup及PAT的知识漏洞整理
1、动态二维数组声明:int** a2 = new int*[rows];for(int i=0;i<rows;i++)a2[i] = new int[columns];2、scanf遇到空格会结束。(%s也是)但最后的空格、换行等会留在缓冲区。3、qsort使用stdlib.h,其中的sizeof()中填数组类型。Cmp函数,返回值为负则不交...原创 2020-02-10 20:27:14 · 238 阅读 · 0 评论 -
csp c++技巧和知识漏洞总结
输入:二维动态数组:int** a2 = new int*[rows];for(int i=0;i<rows;i++)a2[i] = new int[columns];若只用cin,cout,可以添加std::ios::sync_with_stdio(false);加快读取速度输入两个字符串,中间以空格分隔:#include&...原创 2020-02-10 20:15:53 · 763 阅读 · 1 评论