![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pat
文章平均质量分 77
dream_never_giveup
这个作者很懒,什么都没留下…
展开
-
pat-a1110. Complete Binary Tree (25)
这个题西先是没好好读题,没注意到no后面要输出根节点。。然后是写太快了没注意范围,以为节点编号都是个位数。这个点错了我好多。。#include#include#include#include#includeusing namespace std;map >tree;int p[50];int last;bool bfs(int root){ queue q; int原创 2017-08-04 23:45:25 · 237 阅读 · 0 评论 -
pat-a1090. Highest Price in Supply Chain (25)
树这类基础题还是有基础。。应该尽快刷到图弥补不足#include#include#include#includeusing namespace std;map >tree;int level=0,sum=0;void dfs(int root,int t){ int len=tree[root].size(); if(len==0){ if(level<t){ le原创 2017-03-14 20:03:56 · 209 阅读 · 0 评论 -
pat-a1091. Acute Stroke (30)
读题有点难。。。。注意维数对应即可#include#includeusing namespace std;int mapx[1500][150][100];bool visit[1500][150][100]={0};int n,m,l;struct node{ int x,y,z; node(int a=0,int b=0,int c=0):x(a),y(b),z(c){原创 2017-03-13 23:30:33 · 215 阅读 · 0 评论 -
pat-a1103. Integer Factorization (30)
自己想的深搜比较复杂,看了宝典的思路。。先把factor存好再去就行。第4个测试点是1 1 2.。开始没注意边界这个点会输出impossible。。#include#includeusing namespace std;int fac[1000];int ans=0,k;vector vi,a;int power(int i,int p){ int ans=1; while原创 2017-03-13 14:48:25 · 349 阅读 · 0 评论 -
pat-a1097. Deduplication on a Linked List (25)
刚开始编译器输出正确交上去一直提示编译错误。。后来发现是数组下标那里的问题。。把abs函数写到数组下标里oj就会编译错误。。以后要注意一下#include#include#include using namespace std;struct node{ int ke,l;};node k[100010];int visit[10010];int num[10010];int原创 2017-03-11 22:44:39 · 213 阅读 · 0 评论 -
pat-a1052. Linked List Sorting (25)
最后一个测试点是链表没有结点。。开始没注意#include#include#include#includeusing namespace std;map an;map na;map no;int t1[100010];int main(){ int a,b,c,x,y,z; scanf("%d%d",&a,&b); for(int i=0;i<a;++i){ sca原创 2017-03-10 22:35:33 · 191 阅读 · 0 评论 -
pat-a1022. Digital Library (30)
宝典基础篇终于A完了,后面就是提高篇了。。真鸡冻。基础够了。以后还是希望每天A一个不水的题这个题就关键字那里开始没认真读坑了一点#include#include#include#include#includeusing namespace std;struct node{ string info[5]; string ke[5];};node k[10010];int原创 2017-03-06 22:50:20 · 177 阅读 · 0 评论 -
pat-a1032. Sharing (25)
同一个字母会有不同的前后地址。。。不能像上个反转链接表一样使用map#include#include#includeusing namespace std;struct node{ int l; char c;};node no[1000000];char t1[100010];char t2[100010];int visit[1000010];int main(){原创 2017-03-09 22:35:25 · 185 阅读 · 0 评论 -
pat-a1071. Speech Patterns (25)
继续按着宝典刷这个卡了一个点,是单个单词的情况。。#include#include#includeusing namespace std;int main(){ string s; map si; getline(cin,s); int maxn=0,flag=0; int len=s.size(); string temp; for(int i=0;i<len;++原创 2017-03-05 22:48:59 · 194 阅读 · 0 评论 -
pat-a1074. Reversing Linked List (25)
之前做过,代码比以前精简一点了。。虽然偷懒用了map..测试点其实也不严谨,只有最后一个测试点是没有用完给出的所有节点。。后面要做点ccf的题了。。希望今年能取得好成绩#include#include#includeusing namespace std;int num[100010];int nu[100010];int main(){ int a,b,c,x,y,z;原创 2017-03-08 22:39:48 · 274 阅读 · 0 评论 -
pat-a1060. Are They Equal (25)
很明显我写得太冗余了。。简单说明一下吧。。我以为0就是输出0这个点错了一个,0要输出3 0 0要输出0.000*10^0。。还有一个点是前导0.如00123,。。这个点我真没想到。。其他点情况就很简单了。。分成小于1和大于1处理就能过#include#includeusing namespace std;string k;int x,n;void fun(string& a)原创 2017-03-03 17:50:14 · 204 阅读 · 0 评论 -
pat-a1093. Count PAT's (25)
小水怡情。。23333#include#includechar s[100010];int main(){ scanf("%s",s); int len=strlen(s); long long int p=0,a=0,t=0; for(int i=0;i<len;++i) if(s[i]=='P') p++; else if(s[i]=='A') a+=p; els原创 2017-02-22 17:20:00 · 188 阅读 · 0 评论 -
pat-a1054. The Dominant Color (20)
水题一个。。碰到一个难点的没做出来。。后面补上#include#includeusing namespace std;map ii;int main(){ int n,m; int t,maxn=0,k; scanf("%d%d",&n,&m); for(int i=0;i<n*m;++i){ scanf("%d",&t); ii[t]++; if(ii[t]>ma原创 2017-03-02 11:17:23 · 195 阅读 · 0 评论 -
pat-b1005. 继续(3n+1)猜想 (25)
用java不是想象中那么顺利。。我把函数写到main函数前无论怎么提交都是返回非0.。写到后面后点高级编译器还有两个超时。。放到后面直接过了。。java迷真多。。以后有机会换个oj用java试试函数位置对时间的影响import java.util.*;public class Main{ public static void main(String[] args) { int n;原创 2017-01-22 21:41:55 · 348 阅读 · 0 评论 -
pat-a 1043. Is It a Binary Search Tree (25)
很明显这个题我冗余代码写得有点多,昨天想使用指针来建树,一直出现指针指向非法空间问题没做出来。改成数组就对了。指针使用不是很熟悉。同学做这个题用递归建树,如果递归过程中建不了二叉树就直接输出NO,递归我写起来也是很容易越界。这个题有相同的编号因此不能使用STL来代替建树这个题题意就是判断所给数列是不是搜索二叉树或者镜像的搜索二叉树,输出两种树分别对应的后序遍历就行了(镜像树先右后左)原创 2017-06-04 22:22:43 · 229 阅读 · 0 评论 -
pat-a 1094. The Largest Generation (25)
直接广搜判断哪一层结点最多即可#include#include#include#includeusing namespace std;map >tree;int c[110];int maxn=0,p=0;struct node{ int num; int level; node(int a=0,int b=0):num(a),level(b){ }};void b原创 2017-05-31 22:05:10 · 225 阅读 · 0 评论 -
pat-aChain the Ropes (25)
每次选择两根绳子合在一起,每合一次总长度就是两端和的一半。只要让长的尽可能晚的合并就行了。实质就是一个哈夫曼树。输出那里不是四舍五入,是向下取整,不然最后一个点过不了#include#include#includeusing namespace std;struct node{ double d; node(double a=0):d(a){ } friend bool o原创 2017-08-04 23:41:47 · 224 阅读 · 0 评论 -
pat-a1105. Spiral Matrix (25)
水题。。还调了一段时间,惭愧。。刚开始在while循环里面多加了一个i++。。。#include#include #include#includeusing namespace std;int num[1000000];int ans[10000][10000];int main(){ int n; scanf("%d",&n); for(int i=0;i<n;++i)原创 2017-07-27 11:18:56 · 230 阅读 · 0 评论 -
pat-a1018. Public Bike Management (30)
刚开始一直没有做出来,题意没有理解对。。是在去目标地点的路上顺便使路上的车数量达到完美。我以为回来的路上也能弄完美。举例来说。a点3车,b10车,经过a到b去,要send2,back5而不是send0,back3。这样的话就比较容易做了。深搜,记录send和back的状态,找到完美路径。中间用例dijkstra算法,用来算最短路径进行剪枝,不用也不知道会不会超时。刚开始想用纯的dijkstra算法原创 2017-07-26 22:24:45 · 283 阅读 · 0 评论 -
pat-a1087. All Roads Lead to Rome (30)
经过一系列dijkstra练习题的练习后,已经能够解决在同时考虑除路径以及其他因素下的最优路径问题。昨天调了半天输入。才发现起始城市没有happiness。就只输入城市数量-1的happiness就行了。#include#include#include#include#includeusing namespace std;const int inf=10000000;struct原创 2017-07-25 11:03:37 · 503 阅读 · 0 评论 -
pat-a1072. Gas Station (30)
直接对每个能建加油站的地方使用dijkstra算法就行了,求出到每个用户的最短距离,将每次的结果求出总路程,离最近用户距离,以及加油站下标存放在结构体数组里面然后排序。输出第一组数据就行。四舍五入那里3.25保留一位我的编译环境会输出3.2,直接提交到oj上也是对的,应该是和编译环境有关。#include#include#include#include#include#inclu原创 2017-07-23 11:34:40 · 321 阅读 · 0 评论 -
pat-a1030. Travel Plan (30)
自从以前类似题看过大佬代码后不断练习,差不多能够熟悉使用dijkstra算法。这个题也就不难了直接在原算法上面添加价格评价因素就行。每次选取路径最小的,如果有多个路径最小的节点选择花费最小的就行了。#include#include#include#includeusing namespace std;int cost[510];int dis[550];int visit[5原创 2017-07-22 11:25:10 · 227 阅读 · 0 评论 -
pat-a1003. Emergency (25)
这个题本身是一个比较简单的单源最短路径的问题。也不怕被笑这个算法一直写得有问题。这次仔细学习了大佬的代码。要不断重复才能熟悉这个算法。#include#include#include#include#includeusing namespace std;int we[510];int visit[510];int dis[510];int ans[510];int c2;原创 2017-07-15 23:37:14 · 245 阅读 · 0 评论 -
pat-a1076. Forwards on Weibo (30)
这个题我开始用深搜一直有两个点过不了。最后一个点是wa不是超时,不是很明白我深搜哪里写的不对。深搜限制层数计数访问过的节点。网上都是广搜写的。换成广搜就直接过了。后面如果有时间再看看深搜的问题。#include#include#include#include#includeusing namespace std;map >g;int l,ans=0;int visit[1010原创 2017-07-13 17:24:45 · 174 阅读 · 0 评论 -
pat-a1034. Head of a Gang (30)
一开始的方向都错了。。这个题对边进行深搜,开始一直对点进行深搜的。在边搜索的同时,把边的权重放进两个节点的权重数组里面。同时用深搜确定有多少组织。每个组织有哪些成员存起来。权重和大于阈值的输出头领以及人数就行了。刚开始第3测试用例一直段错误。。查了半天才反应过来1000条通话记录最多能有2000人。。数组开小了。。#include#include#include#include#i原创 2017-07-12 17:31:41 · 360 阅读 · 0 评论 -
pat-a 1107. Social Clusters (30)
并查集,我写的多了一点。简单说下就行,两个人如果有共同的爱好就是一个圈子里面的。开始错误原因在于压缩路径不够彻底。因为最后判断有几个圈子时没有去寻找根直接判断父节点,因此要压缩到底才能直接判断。#include#include#includeusing namespace std;int num[1010][1010];int p[1010];int visit[1010];原创 2017-07-10 17:25:25 · 201 阅读 · 0 评论 -
pat-a1064. Complete Binary Search Tree (30)
乍看一下30分还以为会写很多代码。这个题关键在于使用什么样的结构存储树。完全二叉树用数组直接存储,下标代表左右子女的位置。将题目的数字排序可以得到前序遍历,然后递归建树。数组里面的顺序就是层次遍历#include#includeusing namespace std;int tree[1010];int nu[1010];int p=0,n;void creat(int root)原创 2017-06-07 22:03:46 · 295 阅读 · 0 评论 -
pat-a1053. Path of Equal Weight (30)
这个题开始想写一个关于数列排序。后来看标准库发现vector序列可以直接比较大小。就只需要先把所有答案存起来在sort就行了#include#include#include#include#includeusing namespace std;int w[110];int isleaf[110];int s,p;map >tree;vector v;vector >ans原创 2017-06-02 22:16:39 · 235 阅读 · 0 评论 -
pat-a1106. Lowest Price in Supply Chain (25)
用广搜应该好一点。深搜不剪枝也能过。样例不够健全#include#include#include#includeusing namespace std;map >tree;int ans=1000010,num=0;void bfs(int root,int level){ int len=tree[root].size(); if(len==0){ if(ans>lev原创 2017-06-01 21:53:55 · 191 阅读 · 0 评论 -
pat-a1063. Set Similarity (25)
又卡时。。,用set超时(这里是指后面检查多少个重复用了set)。。set用的是平衡二叉树搜索应该很快。。应该是插入太多了。。输入时进行去重然后排序。。两个有序的数组判断多少个 重复数字和一共多少个数字就很容易了#include#include#includeusing namespace std;int num[51][10010];int cn[51];int main()原创 2017-01-22 20:40:38 · 220 阅读 · 0 评论 -
pat-a1100. Mars Numbers (20)
寒假结束继续弄。。今天水题休息一下。刚开始字符串转整数那里没注意写错了。。#include#include#include#includeusing namespace std;string ge[14]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};string s原创 2017-02-20 18:38:04 · 266 阅读 · 0 评论 -
pat-b1004. 成绩排名 (20)
犯了初学者问题。。只是开辟了自定义数组后里面放的只是指针。不能直接赋值。。要new对象然后指向它。。还有就是开始想用自定义结构排序没成功。还是不熟悉。多练import java.util.*;public class Main{ public static void main(String[] args) { int n; int maxn=0,minn=0; Scanner原创 2017-01-22 00:20:37 · 231 阅读 · 0 评论 -
pat-a1081. Rational Sum (20)
以前做这种题没有用struct。。两个int相乘不会超过long long。。以前还是先约分再加的。。可以直接加了再约分。#includetypedef long long int LL;struct node{ LL fenz,fenm; node(LL a=0,LL b=1):fenz(a),fenm(b){ }};LL gcd(LL a,LL b){ if(b==0) r原创 2017-01-05 10:51:36 · 221 阅读 · 0 评论 -
pat-a1085. Perfect Sequence (25)
这个题原意是对每个数,在另一个范围内二分查找一个数找到最大长度我翻看了一下我之前写过的basic里面的这个题,其实用暴力也能过。每次直接在已经找到的最大距离之外去找也能#include#include#includeusing namespace std;long int num[100001];int main(){ long int n,p; scanf("%ld%ld原创 2016-12-27 14:57:16 · 253 阅读 · 0 评论 -
pat-a1038. Recover the Smallest Number (30)
这个题在于按什么规则排序刚开始想的是比较两个字符串长度,如果长度不同,短的补自己第一个字符,补到相同时比较大小。。这样做测试点有一个没过。排序规则不对。比如321和3213,按这个规则谁在前不影响,然而321排前面才对。加另一个字符串排在前面还是后面加起来比较大小就行了。以前做过类似的没注意。慢慢刷吧#include#include#includeusing namespace原创 2016-12-27 14:35:37 · 330 阅读 · 0 评论 -
pat-a1067. Sort with Swap(0,*) (25)
简单贪心运行时间有点长,估计是map那里,习惯了用map。。。开始两个点超时,原因在于当0在第一个时,要找一个位置不对的数交换,我每次从第一个找所以超时,应该记录上次搜寻的位置。从这个位置继续找就过了#include#includeusing namespace std;int a[100010];int main(){ map ii; int n,ans=0,pos,k=1;原创 2016-12-26 11:37:03 · 246 阅读 · 0 评论 -
pat-a1037. Magic Coupon (25)
简单贪心。题目大概意思就是两个数组的数,每次取两个数进行乘积进行累加。一直取到某个数组没数,求累加值的最大值我做时把正数和负数分开了,正数从大到小,负数从小到大。。不想倒着乘题目保证没超过int范围,但是乘积可能会。所以要用long long int..同时只定义结果是long long int应该是不可行的(没试过)。两个int乘积存到long long int里面应该不是正确的值既原创 2016-12-26 10:54:35 · 196 阅读 · 0 评论 -
pat-a1033. To Fill or Not to Fill (25)
这个题就是贪心(还是看了看宝典,2333)贪心策略:从起点开始,依次往后,找到一个价格比目前加油站单价更低的加油站就只需要买刚好能到该加油站的油就行了。如果在能走的范围内所有加油站的单价都高于目前加油站的单价,直接在目前加油站加油加满,在能到的范围内选一个单价最低的。一直这样走就行刚开始有个点一直过不了,是我程序思路问题,到了某个加油站后,只要后面还有加油站就一定会选一个加油站,其实有可能原创 2016-12-25 17:34:12 · 570 阅读 · 0 评论 -
pat-a1070. Mooncake (25)
这个题以前在basic里面做过,然而还是有个点没过。原来是库存量只说了是正数并非整数,真是越做越糊涂,应该是以前中文题目注意到了。以后刷完后再补以前刷的题#include#includeusing namespace std;struct node{ double s,p,d;};node k[1010];bool cmp(const node& a,const node&原创 2016-12-25 15:55:06 · 234 阅读 · 0 评论 -
pat-a1084. Broken Keyboard (20)
现在这种水题然后发出来只是为了以后重新看时知道难度。说不定pat就能刷上去了。23333。今天继续刷#include#include#includeusing namespace std;int main(){ map ci; char a[100]; char b[100]; scanf("%s%s",a,b); int len1=strlen(a); int len2=原创 2016-12-25 10:52:11 · 298 阅读 · 0 评论