自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

☁的博客

非科班渣渣的学习日记

  • 博客(62)
  • 收藏
  • 关注

原创 PAT 甲级 1073 PAT Ranking 个人错误总结

没好好看样例,测试多输出了一个‘+’号硬是以为自己是对的了。。#include<bits/stdc++.h>using namespace std;int main(){ string a; cin >> a; int i=0; while(a[i]!='E') i++; string b; int c; b=a.substr(0,i); c=stoi(a.substr(i+1,a.size())); //cout<<b<<c; i

2020-07-31 22:18:05 63

原创 PAT 甲级 1061 PAT Ranking 个人错误总结

这个题一开始没读懂题目,common理解错了,多注意英语。这个题就是设定条件,不难。#include<bits/stdc++.h>using namespace std;char str1[61];char str2[61];char str3[61];char str4[61];char ans[7][4]={"MON","TUE","WED","THU","FRI","SAT","SUN"}; int main(){ scanf("%s %s %s %s",&st

2020-07-31 21:08:07 76

原创 PAT 甲级 1148 PAT Ranking 个人错误总结

耗费了近两个小时吧。自己一个小时写出来差一个点的,不过估计考场上真的写不出来,中间debug心态大崩,我一开始直接想的是遍历每个说谎者组合,写了100多行,后来看了柳神,,太厉害了。用-1而不用bool可以使用乘法判断二者异或,并且还能用加法等于0判断是否刚好有一个狼人说谎。真的佩服佩服。ac代码(看六神自己写的,没柳神的好):#include<bits/stdc++.h>using namespace std;int player[101]={};int wolf[101];i

2020-07-30 23:22:58 92

原创 PAT 甲级 1128 PAT Ranking 个人错误总结

插flag记得break因为不希望scanf读不完所以插了flag,并且判断flag来进入,这就导致一个循环标记flag后没有及时退出,又被覆盖。#include<bits/stdc++.h>using namespace std;int queen[1010];bool jug(int a,int b){ int m=queen[a]; int n=queen[b]; if(m==n) return true; if(m-n==b-a) return true; if(m-

2020-07-30 21:10:13 86

原创 PAT 甲级 1008 PAT Ranking 个人错误总结

pat春季考试,刚刷了50题就去了,惨不忍睹,跨专业考研真难啊,不说了这次接着冲。。不说了直接ac。#include<bits/stdc++.h>using namespace std;int main(){ int n,temp,a=0,sum=0; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&temp); if(a<temp){ sum+=(temp-a)*6; sum+=5

2020-07-30 20:16:35 62

原创 【测试点1 3】PAT 甲级 1105 PAT Ranking 个人错误总结

快乐模拟,不难想,想ac确实需要想。有两个点不好想,是因为是素数的点,比如3项,如果不注意,在一层里一个点可能会被赋值多次,导致越界,RA#include<bits/stdc++.h>using namespace std;int num[10001];int ans[10001][10001];bool cmp(int a,int b){ return a>b;}int cnt=0;void spiral(int level,int a,int b){ if(lev

2020-07-21 23:50:30 174

原创 PAT 甲级 1098 PAT Ranking 个人错误总结

heapsort主要写down和初始化函数。heapsort倒序,我的错误在heapsort中引用down的top写错了,导致永远不会输出有序序列。另外这种题的点中有一个是sort不考虑初始序列。AC代码:(有点乱)#include<bits/stdc++.h>using namespace std;int num[101]={};int ans[101]={};int in[101]={};int heap[101]={};bool insert(int n){ f

2020-07-21 16:38:06 74

原创 PAT 甲级 1107 PAT Ranking 个人错误总结

并查集主要写4个函数。初始化 并 查 缩短路径。然后这个题需要统计出一共有几个集合,和集合元素数。可以缩短路径之后,统计相同father的元素。也可以用一个bool hash双层循环遍历一遍1-n,遇到true的跳过,false的count++并把全集设为true。比较麻烦,还可以直接sort整个father,遍历,遇到不同的count++。还可以用一个所有father的hash表,遍历一遍,每个元素的father对应的hash++。再sort这个hash表,递减,0的直接甩到后面去。错误:prin

2020-07-21 14:45:04 120

原创 PAT 甲级 1066 PAT Ranking 个人错误总结

avl有点繁杂,不好记。。写了1h多。#include<bits/stdc++.h>using namespace std;struct node{ int data; int h; node *lchild; node *rchild;};node* newnode(int n){ node *root=new node; root->h=1; root->data=n; root->lchild=NULL; root->rchild=NU

2020-07-20 19:28:22 67

原创 PAT 甲级 1064 PAT Ranking 个人错误总结

这个题是完全二叉树,性质是左孩子是父亲的两倍,右孩子是父亲的2倍加一。注意从1开始。这里不用链表,不仅更容易建立完全二叉树,而且下标的顺序就是levelorder的顺序,所以只需要一个dfs即可。犯错误:==写成=#include<bits/stdc++.h>using namespace std;int num[1001];struct node{ int data; int lchild=-1; int rchild=-1;}tree[1001];void creat(

2020-07-20 16:20:28 58

原创 PAT 甲级 1099 PAT Ranking 个人错误总结

简单题,通过题目可以看出来是给了一个二叉树的结构,然后给数列,插入后输出层序排列,这个先把二叉树创建好,然后再使用中序遍历插入数字,层序遍历输出即可。#include<bits/stdc++.h>using namespace std;struct node{ int data; int lchild=-1,rchild=-1;}tree[100];int tag=0;int step=0;int num[100];int ans[100];void bfs(int roo

2020-07-20 15:44:46 83

原创 PAT 甲级 1079 PAT Ranking 个人错误总结

还行这个题,看到就有思路的题,建树求层数然后再加权值。#include<bits/stdc++.h>using namespace std;struct node{ int data; vector<int>child; int layer;}tree[500010];int retail[500010];int bfs(int root){ queue<int>q; tree[root].layer=0; q.push(root); while

2020-07-19 18:50:49 85

原创 PAT 甲级 1086 PAT Ranking 个人错误总结

这个提还好,我一开始用的静态的,结果发现不太会用。。改成了链表还好。最后输出654321我死活找不到问题,结果发现是post函数l和r写反了。。。。。#include<bits/stdc++.h>using namespace std;struct node { int data; node* lchild; node* rchild;};int inorder[31];int preorder[31];int postorder[31];node *create(int

2020-07-19 16:54:11 62

原创 PAT 甲级 1102 PAT Ranking 个人错误总结

模板类题目,据说今年不会出了。ez#include<bits/stdc++.h>using namespace std;struct node{ int rchild=-1,lchild=-1;}tree[10]; bool table[10]={};int in[10],le[10];int tag1=0,tag2=0;void inorder(int root){ if(root==-1)return; inorder(tree[root].lchild); i

2020-07-18 19:34:40 75

原创 PAT 甲级 1091 PAT Ranking 个人错误总结

一个小时,好慢,问题出在了我以为有8种临界态,想当然的2^3了。#include<bits/stdc++.h>using namespace std;int juzhen[60][1286][128];bool qflag[60][1286][128]={};int x[6]={1,-1,0,0,0,0};int y[6]={0,0,1,-1,0,0};int z[6]={0,0,0,0,1,-1};struct node{ int l,m,n;};bool check(n

2020-07-18 17:00:19 87

原创 PAT 甲级 1103 PAT Ranking 个人错误总结

dfs,p=1的时候会超时,要特判。实现排序的问题,其实从大往小遍历,并且取sum>maxsum(有相等的不更新ans)即可。#include<stdio.h>#include<iostream>#include<algorithm>#include<math.h>using namespace std;int n,k,p,maxsum=0;int l;vector<int> temp,ans;void dfs(int i

2020-07-18 15:07:46 100

原创 PAT 甲级 1097 PAT Ranking 个人错误总结

和上个题差不多。。偷鸡就完事了。#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;struct node{ int data=0; int next=-1; int tag=200020; int add;}ll[100010];bool cmp(node a,node b){ return a.tag<b.tag;}bool key[100

2020-07-17 19:25:44 67

原创 PAT 甲级 1074 PAT Ranking 个人错误总结

自己写了一个链表模拟,结果发现原来可以用stl偷鸡,,我还是太年轻。卡最后一个点的原因是没有用有效结点数来解决问题。#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;struct node{ int data=0; int next=-1; int tag=100010; int add;}ll[100000];bool cmp(node a,node

2020-07-17 18:51:16 86

原创 PAT 甲级 1056 PAT Ranking 个人错误总结

这个题需要想清楚,思路并不难,可以看出来是用队列解决的问题,但是编码很难,层层魂环和边界条件着实让人头晕。我发现我一般习惯于一步写一步,这并不好,因为,思路不清晰的话,变量之间的的关系很容易搞混,在遇到一个题目需要很长的思路,可以先用中文写伪代码,确定设置哪些变量,再code。ac代码(很乱,不是很好):#include<bits/stdc++.h>using namespace std;struct mouse{ int rank; int weight; int no;}m

2020-07-17 16:56:33 82

原创 PAT 甲级 1051 PAT Ranking 个人错误总结

这个题思路错了,判断stack顺序是否成功,要按照push做外层循环,不要按照scanf做外层。记着清空stack!!!!!#include<stdio.h>#include<iostream>#include<algorithm> #include<stack>using namespace std;int a[1000];int main(){ int m,n,k; int temp,step; stack<int> s;

2020-07-17 15:01:25 63

原创 PAT 甲级 1100 PAT Ranking 个人错误总结

我哭了,这个题debug了好久,做的没有一点错了感觉,最后发现是输入火星文单数的时候的map用错了,用成了高位的那个。。#include<stdio.h>#include<iostream>#include<algorithm>#include<map> using namespace std;string num[13]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","

2020-07-16 18:51:46 109

原创 PAT 甲级 1063 PAT Ranking 个人错误总结

这个题就是set就完事了。。#include<stdio.h>#include<iostream>#include<algorithm>#include<set>using namespace std;void print(set<int > b,set<int >a){ set<int>::iterator it; int n=0; int s=a.size()+b.size(); for(it=a.b

2020-07-16 16:46:44 89

原创 PAT 甲级 1039 PAT Ranking 个人错误总结

这题有点卡,思路一开始就是对的,就是卡了最后一个点。因为我用的getchar读数,竟然导致了爆栈,问题是我不知道这样算有问题,我至今还不太能理解为什么,明明每次调用函数就只用了4次getchar。。用完就return了,理论上栈顶多就占那4个空。ac代码#include<stdio.h>#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#in

2020-07-16 15:59:23 124

原创 PAT 甲级 1024 PAT Ranking 个人错误总结

考试建议用usigned long long俩点不过。检查了好久,原来这个数要相当大才可以。我一开始寻思1010 2100也就那样吧16个零差不多,后来发现我犯傻了,这40个零吧。。#include<stdio.h>#include<iostream>#include<algorithm>#include<math.h>#include<string.h>using namespace std;struct bn{ int nu

2020-07-15 18:21:59 107

原创 PAT 甲级 1096 PAT Ranking 个人错误总结

刚看这个题的时候,立刻想了一个on的算法,结果实现后有一个点过不去,后来测试了好久,发现是例如78910111213215*2这种输出不了,因为我只遍历一遍以为只要初始点小的能连的肯定比初始点大的连的多(在有重叠的情况下),仔细想想并不对。例如上面的情况。ac代码#include<stdio.h>#include<iostream>#include<algorithm>#include<math.h>using namespace std;int

2020-07-15 16:58:31 63

原创 PAT 甲级 1078 PAT Ranking 个人错误总结

这个题我读错了,我以为是出现冲突就输出-,后来看了下翻译才知道。。问题:判断素数记得1。#include<stdio.h>#include<iostream>#include<algorithm>#include<math.h>using namespace std;bool a[10000]={};bool isprime(int a){ for(int i=2;i<=sqrt(1.0*a);i++){ if(a%i==0)

2020-07-15 15:35:10 62

原创 PAT 甲级 1081 PAT Ranking 个人错误总结

这种题ez了已经,开局直接写函数:struct f,clean,print,运算问题:1.clean函数调用gcd的时候一定要先赋值给一个数。2.%lldac代码:#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;struct f{ long long up,down; }ans,b[100]; long long gcd(long long a,

2020-07-15 14:32:43 82

原创 PAT 甲级 1088 PAT Ranking 个人错误总结

写的很乱,因为每个函数只用了一次,懒得写成函数了。注意点,-4/3输出为-1 1/3 而不是-1 -1/3。。。注意longlong ,如果long请全long,否则后果不堪设想。。#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;struct f{ long long up,down;}a,b;long long gcb(long long a,long

2020-07-14 18:42:33 76

原创 【点3WA】PAT 甲级 1104 PAT Ranking 个人错误总结

这题的点让人头大,记着long double。%LfPS:晴神柳神的代码都是double的,貌似是新改的测试点。另外算乘法的时候,要把那个double型的乘在前面,否则会错误,因为没有类型转换,int可能溢出。#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;double a[100000]; int main(){ int n; double sum=

2020-07-14 17:12:17 83

原创 PAT 甲级 1101 PAT Ranking 个人错误总结

这个点我是真滴想不出来,格式错误,竟然是要在主元为0的时候输出两个换行。。。常考点了,记着这种方法,很实用,left和right数组存放一个点左边左右元素的同种属性信息。#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int a[100000]={};int l[100000]={};int r[100000]={};int c[100000];int

2020-07-14 16:27:06 91

原创 PAT 甲级 1089 PAT Ranking 个人错误总结

这个题,错误在一个点,就是对于4 3 4 2 1 3 4 2 1的输入的处理,如果是2 3 4 1才是正确的,我i的初值赋值错了。ac代码#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int a[100]={};int b[100]={};int c[100]={};int ans[100]={};int main(){ int n; scanf(

2020-07-14 15:44:56 92

原创 PAT 甲级 1085 PAT Ranking 个人错误总结

暴力解法一个点超时,upper_bound是个好东西。long long注意一下,另外神奇的是我暴力没用long long没有报错。。ac代码#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int a[100000]={};bool cmp(int a,int b){ return a<b;}int main(){ int n,p,m,M;

2020-07-14 14:48:53 50

原创 PAT 甲级 1067 PAT Ranking 个人错误总结

这个题我想的比较复杂,找到规律,每增加一个回环,次数加一,当0初始不在无序回环中时,次数加2。用一个hash表表示已经遍历的回环。一开始用的暴力法,有两个点为超时,如果考试果断跳。#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<math.h>#include<vector>using namespace s

2020-07-13 21:27:02 92

原创 PAT 甲级 1070 PAT Ranking 个人错误总结

哈哈哈哈哈又错了,错在了double上和while忘记判断超限上。哈哈哈哈,哈哈哈,哈哈,哈。。。#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<math.h>#include<vector>using namespace std;struct node{ double kg; double pr;

2020-07-13 20:14:16 52

原创 PAT 甲级 1048 PAT Ranking 个人错误总结

这个题目我一开始想用建立一个有序表,从后往前遍历的方法,发现有几个错误点,一个是没有办法记录相同的硬币的情况,一个是有些数组溢出的情况。后来用了hash表处理。依照原来的思路,可以先将数组排序,然后用two pointer的方法处理,效率也很高,且省空间。ac代码#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<math.h&gt

2020-07-13 18:30:15 103

原创 PAT 甲级 1084 PAT Ranking 个人错误总结

这个题目要注意输出是按照输入的顺序输出的,不是按照字母顺序。弱国使用一个hash表读取输入信息,就会丢失掉输入的顺序,但是输出的顺序是无所谓的,因为输出必然小于输入,所以包含的顺序信息也就少,所以可以建立输出的hash表,这样不会丢失顺序,再一边读入输入,一边输出没有输出的字符。ps:柳神tql,就12行。#include<stdio.h>#include<string.h>using namespace std;char in[1010];char out[1010]

2020-07-13 16:27:10 58

原创 PAT 甲级 1092 PAT Ranking 个人错误总结

ez题直接过了。#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<math.h>#include<vector>using namespace std;int color[62]={};char shop[1010];char eva[1010];int main(){ scanf("%s",&amp

2020-07-13 15:09:18 68

原创 【需要回看题】PAT 甲级 1075 PAT Ranking 个人错误总结

这题有点晕,饶了好久,想不到合适的方式去平衡,如果用结构体数组,要建立一个很大的数组。下标作为id,最后遍历很麻烦。如果做一个不按下标来的数组,每次输入数据都要遍历一遍来检索id,也很麻烦,vector可以建立动态数组,并且我用下标索引,也加入了id这个项,这是因为sort之后,下标将失去原有的顺序,而这个题正好不用输出没有输入过的数据,所以只用在scanf的过程中记录id即可。另外这个输出条件也挺绕的,这时就要跳出来看整体,真正需要输出的人有什么相同点,他们有没有共同经历的节点,在这里设置flag即可

2020-07-08 21:40:31 55

原创 PAT 甲级 1055 PAT Ranking 个人错误总结

我做题好慢,debug太生疏了。。这题遇到的问题:1.把strcmp的<=写在了括号里,导致无限循环。2.忘记scanf n,k3.忘记输出前m位变量。ac代码#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<math.h>#include<vector>using namespace std;

2020-07-07 16:32:07 91

原创 PAT 甲级 1062 PAT Ranking 个人错误总结

到最后发现为何我不用一个4为数组,太麻烦了。。#include<stdio.h>#include<iostream>#include<algorithm>#include<string>#include<math.h>#include<vector>using namespace std;struct man{ int id; int vir,tal;}temp;bool cmp(man a,man b){

2020-07-07 14:20:01 85

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除