- 博客(106)
- 收藏
- 关注
原创 pat a 1111
如果是测试点2不过的话,可能咱们同是落难兄弟,这道题要求在路程最短时找时间最少的,可是在时间最少时却不是找路程最短的,而是找通过结点最少的。在第三次做的时候终于发现了这个问题所在…#include <iostream>#include <algorithm>#include <vector>#include <cstring>using n...
2020-04-10 16:44:26 202
原创 pat a 1084
#include <iostream>#include <cstring>#include <cctype>#include <unordered_map>using namespace std;unordered_map<char,int> mp;int main(){ string a,b; cin>>a&...
2020-04-07 23:15:35 180
原创 pat a 1013
思考一下的话这道题其实考的是有多少个连通块,所以用dfs或者bfs都是可以的,道路数等于连通块个数减1。想要将某个结点视作断掉,就先将他的vis数组置为true,这样dfs时碰到他就会绕开了。#include <iostream>#include <vector>#include <cstring>using namespace std;const ...
2020-04-01 23:09:46 183
原创 pat a 1006
#include <iostream>#include <cstring>using namespace std;struct node{ string id; int in; int out;};int main(){ int n; cin>>n; node cmp; string first,last; cin>>cm...
2020-04-01 18:50:20 133
原创 pat a 1005
用string写比不用大概多了2ms,不过这样思路能清晰很多#include <iostream>#include <cstring>#include <algorithm>using namespace std;string speak[15]={"zero","one","two","three","four","five","six","sev...
2020-04-01 18:36:00 192
原创 pat a 1001
在to_string的时候,负数的负号也会被转换成字符串,要注意一下#include <iostream>#include <cstring>using namespace std;int main(){ int a,b,sum; cin>>a>>b; sum=a+b; if(sum<0){ printf("-"); ...
2020-04-01 18:27:15 104
原创 pat a 1002
用stl在使用for(auto it=mp.rbegin();it!=mp.rend();it++)时,it是++而不是–,如果用–就会输出停不下来的答案#include <iostream>#include <map>using namespace std;map<int,double> mp;int main(){ int k; cin>...
2020-04-01 18:25:01 122
原创 pat a 1004
虽然是树的问题,但其实抽象起来是图的问题,在做时要注意统计一下最深层是多少,一开始我直接想当然地对着每一个节点输出,这样当然是不对的。#include <iostream>#include <vector>using namespace std;const int maxv=110;vector<int> tree[maxv];int level[...
2020-04-01 16:21:15 109
原创 pat a 1003
用的是dijsktra+dfs,我觉得这种模板比较通用#include <iostream>#include <vector>#include <algorithm>#include <cstring>using namespace std;const int maxv=510;const int inf=1000000000;int...
2020-04-01 16:18:05 112
原创 王爽汇编语言 测试点10.5(2)
题目写给自己看mov word ptr ss:[0],offset s是将标号s处的偏移地址写入ss:[0]中,但一开始有个困惑,s的偏移地址具体是多少呢,但其实这道题不用关注具体的数值,因为之后的计算是以相对值得出的。call dword ptr ss:[0]这句话意思同注释s: mov ax,offset s sub ax,ss:[0cH] 对于这句话来说,让ax得到了...
2020-03-14 22:21:41 970
原创 王爽汇编语言 检测点10.4
内存地址 机器码 汇编指令 1000:0 b8 06 00 mov ax,6 1000:3 ff d0 call ax 1000:5 40 inc ax1000:6 58 mov bp,sp ...
2020-03-14 21:10:26 2737 4
原创 王爽汇编语言 检测点9.3
题目这里写一下自己的理解,作为笔记。s:mov cl,[bx]mov ch,0这段代码的意思是从2000H段的偏移地址为0的地方每次取出1个字,不过因为题目要求的是寻找字节,但是由于loop进行比较的是寄存器cx,因此我们需要使用一整个cx来存储当前字节。但是该如何做呢:只需要从2000H:[BX]的地方读取cl的部分,然后把ch的部分置0,就可以获得我们所需的当前字节了。inc bx...
2020-03-14 19:29:27 850
原创 pat a 1107
首先要明确一点,只要有相同的喜欢活动,这两个人就是一个圈子了。所以用一个act数组来记录一下,如果这个活动是第一次被人喜欢,这个人就是这个活动的根,之后再次碰见喜欢这个活动的人,就让这个人的根是最开始那个人。我一开始觉得act数组和father数组的作用重复了,但其实不是的。act数组的作用主要是记录当前这个活动编号有没有人喜欢,如果有,最先喜欢这个活动的人的编号是谁。而father数组的作用在...
2020-03-04 22:11:08 106
原创 pat a 1103
这道题主要考虑一下怎么写dfs,首先考虑递归出口,如果我们当前要加的是0的p次方,或者相加个数大于k,或者当前总和大于n,那么显然是应该被修剪掉的出口。当当前总和等于n且相加个数等于k时,显然也是一种出口,在这里判断一下当前因子和是不是比以前更大,如果更大了,就记录这条路径。出口写完了,如果比较熟悉dijsktra+dfs的话,就可以把那个改一下用,两者比较像。现将当前判断的因子加入temp,然...
2020-03-03 21:06:46 132
原创 pat a 1022
这道题有个坑就是编号前面不足位的话要补0,否则后两个测试点显示答案错误。可是不应该提示格式错误嘛QAQ#include <iostream>#include <map>#include <cstring>#include <vector>#include <algorithm>using namespace std;str...
2020-03-02 23:03:06 112
原创 pat a 1089
在进行归并排序时千万要注意每次多出来的那一丢丢,如果出现了段错误,有可能就是这里写的不正确。我想运行时错误可能约等于段错误?因为我用vector时显示运行时错误,改回普通数组就提示段错误。#include <iostream>#include <algorithm>using namespace std;int a[110],b[110];int main(...
2020-03-01 23:37:06 147
原创 pat a 1043
题目一开始没理解print in the next line the postorder traversal sequence of that tree.我以为是不管是镜像树还是普通树都只要普通树的后序遍历,但其实镜像树要镜像后序遍历…#include <iostream>#include <vector>using namespace std;struct no...
2020-03-01 18:14:25 119
原创 pat a 1080
这道题一开始写有一个测试点超时,我想大概是因为我老是对结构体排序的原因,因此只将必要的数据拖出来单独排序就可以解决这个问题。我用nowin这个数组记录当前情况下每个学校的录取情况,用nowrank来记录最后被录取的同学的排名。当遇到nowin的数值小于quota的情况就直接录取,否则就去看看这位同学的排名是不是和他想去学校最后被录取同学的排名相等呢,相等也录取。将结果存储在ans数组里,只存储...
2020-02-29 23:10:23 124
原创 pat a 1075
这道题最好还是参考柳神的,我其实没有完全读懂题意就开始做了,所以在数据处理方面比较乱。这道题我在第一次做的时候没有完全对,显示一个答案错误和一个段错误,第二次做的时候反而错的更多了,不过经过修改终于改对了,说一下我觉得的坑点吧。1.这个题目意思虽然好懂,但其实我读完了之后以为懂了,但其实理解的是错的。对于这道题来说,只有那种全都没提交或者编译失败的人才不会被显示,那么也就是还有一种情况,有人全...
2020-02-29 16:08:20 160
原创 pat a 1097
这道题我一开始测试点2段错误,第一遍的时候我选择先忽略这次找到了原因,详见关于PAT段错误(由STL引起的错误)也就是这道题要注意某一条链表是空的情况#include <iostream>#include <unordered_map>#include <vector>#include <algorithm>#include <c...
2020-02-28 21:27:26 166
原创 pat a 1096
一开始我是每一个因数都要算一下,这样最后一个测试点会超时。那么寻找更优的方法,我一开始很朴素地认为直接把n/2就好了,但还是会超时。但其实两个数相乘不超过n的最小数应该是 (根号n)+1。然后既然用了这种方法,这样的话最后一个数本身是不会被检测的,那么就要求先把maxid置为0,如果经过循环后值还是0,那么他最大长度就是1,因数就是他本身了。#include <iostream>...
2020-02-28 19:38:05 162
原创 UE4程序崩溃后c++代码重载
在UE4崩溃后,进行删除相关文件恢复后,发现c++没有生成这个选项了,不仅如此,以前能够给出的相关错误提示全都没有了,这样写代码很是麻烦。有一种解决方法是新建一个c++类,可能会弹出一个框,如下图:点击Reload,就会重新关联。不过是否能生成不是很清楚,但至少提示全都回来了,头一次看到红红的波浪线感觉那么亲切。我还是爱Dev c++...
2020-02-27 01:01:03 655
原创 leetcode 5.最长回文子串
这个判断好像是必要的,不然第二个测试点就会出错了,不过实在难以想象还有字符串为空的判断。if(s.length()==0||s.length()==1){ return s; }用的是中心扩展算法,官方解答已经给的很详细,注意细节就好。我因为细节改了好久…class Solution {public: string longestP...
2020-02-18 20:09:51 69
原创 pat a 1167
仅验证了样例。给出一个树的中序遍历,并且这棵树的数据符合小根堆(但不是堆,因为不是完全二叉树),请你给出这棵树的层序遍历。这道题关键在于如何建出这样一棵树。可以发现,我们把每一棵子树的根节点取出来,他都是当前序列中最小的那个值。因此在建树时每次都遍历找出序列中的最小值,让他作为根划分左右子树,然后对左右子树也这样递归建立,就可以得到这棵树了。最后写一个层序遍历代码就好。本来我还在想只有中序遍...
2020-02-18 02:27:38 162
原创 pat a 1166
仅验证了样例这道题说如果组内每个人都是朋友且任意加一个人进去会破坏这种关系,那么就输出Area %d is OK.\;如果组内每个人都是朋友,但还可以加进去另外的人并保持这种关系,那么就应该输出Area %d may invite more people, such as %d.\n;如果有任意两个人直接不是朋友,就输出Area %d needs help.\n;然后就用代码翻译这三种情况,我...
2020-02-18 01:09:57 148
原创 pat a 1165
仅验证了样例我想的是遍历一下链表,然后把它们按顺序放到一个新的vector数组中,然后输出。先处理一下多出来单独成一组的,然后一个一个回去找间隔k个结点输出。#include <iostream>#include <vector>using namespace std;const int maxv=100010;struct Node{ int addr;...
2020-02-17 23:43:11 150
原创 pat a 1164
仅验证了样例这个输出让我着实头疼,本来想一个一个字符输出的,但这样的话我的每行都只会有一个字母了。后来才想明白,因为他给的是7*5的图案,本来就是对齐的,所以最好先保存好一个单词,然后像打印机一样一行一行地把图案打印出来,这样图案才看起来正确。再然后要稍微注意一下我这种写法是要考虑最后一位是字母还是别的符号的,如果是字母的话,不要忘了把当前拼好的单词放进word数组里。还有这道题需要用get...
2020-02-17 22:51:32 221
原创 pat a 1163
仅验证了样例题目的意思就是让我们验证一下给出的序列是不是一条dijsktra在进行时可能的开放定点的序列。因为dijsktra会优先开放距离我们选定源点的最短距离的那个点,因此只要验证一下给出序列的d[x]是不是一个升序序列就可以了,准确说是一个非降序列。#include <iostream>#include <algorithm>#include <cst...
2020-02-17 21:03:09 155
原创 pat a 1162
仅验证了样例这道题先根据他所说的建树(也可以不用,但我不建就不会做了…)。然后找到在给出的左右子树中没有出现的结点编号,这个就是根结点了。之后我想用后序遍历做,但卡住了,因为发现如果有个结点左子树为空的话,那就和后序遍历不一样了,所以考虑用dfs做。不过用dfs写完后感觉,其实就是后序遍历的代码稍微改了一下,所以以前的思路其实没什么问题。包括和这道题很像的甲级1130,其实也是中序遍历的代码稍...
2020-02-17 19:33:20 187
原创 pat a 1161
仅验证了样例这道题的标题是Merging Linked Lists ,我感觉1161这道题目好像不见了?不过只能过样例我还是很不保险的,我总是这错那错的。这道题大概就是先把数据存储在node[maxv]中,然后遍历两条链表,把读取到的每个结点分别放进vector l1和l2中,然后我们总是把较长的那一条作为l1。然后就是读两个l1放一个倒数的l2了。不过要注意一下末尾,小心写的数组不要越界了...
2020-02-17 18:48:58 174
原创 pat a 1159
仅检验了样例。因为题目说都是唯一的正整数,且每个数不可能大于1000,所以就用一个ans[1010]来记录每个结点的各个信息,包括层数,兄弟,父亲,左右子树,在一开始为结构体的这些东西初值赋-1,这样没有某一项东西的结点那个值就是-1了,方便之后比较。我想这些信息最好能在一次遍历里记录完成,所以只要一次bfs就可以了。那个fulltree只要除了叶结点每个结点都有左右孩子就好了,不是我一开始理...
2020-02-16 23:12:26 180
原创 pat a 1158
仅验证了样例,而且感觉自己时间复杂度写的有点高这道题说的是找telefraud,并且将他们分别放进所属的gang中,其中telefraud是有超过k的不同的人通电话时长少于5min,并且这些通话时长少于5min的人中少于20%的人给他回了电话。而gang是已经是telefraud的人中有相互通过话的。感觉这道题因为题意的关系还是挺绕的。首先用unordered_set记录那些通话时间小于5mi...
2020-02-16 17:21:47 260
原创 pat a 1157
仅验证了样例#include <iostream>#include <cstring>#include <vector>#include <unordered_set>using namespace std; int main(){ int n; cin>>n; unordered_set<string> ...
2020-02-15 23:13:48 159
原创 pat a 1155
#include <iostream>#include <vector>using namespace std;struct node{ int data; int id; node* left; node* right;};const int maxv=1010;int list[maxv];vector<node*> path;i...
2020-02-15 21:00:22 95
原创 pat a 1147
还是想用建树来做,静态的树反而不怎么会…#include <iostream>#include <vector>using namespace std;struct node{ int data; node* left; node* right;};int m,n;vector<int> post;int list[1010];nod...
2020-02-14 21:35:15 88
原创 pat a 1139
我本来以为会出现2004和-2004的情况,但其实题目的意思是编号其实是惟一的,区别男女的不过是前面的正负号。#include <iostream>#include <vector>#include <cstring>#include <algorithm>#include <cmath>#include <unorde...
2020-02-14 01:16:38 413
原创 pat a 1137
用unordered_map先加入那些gp>=200的人,同时初始化一下gm,gf为-1。并用flag记录一下这些人出现过,之后在读取gm和gf时只记录那些flag[name]=1的人。读取完毕后对map做一下遍历,顺便处理各种成绩,然后把处理完的这些数据放入vector进行一下排序就可以输出#include <iostream>#include <cstring&g...
2020-02-13 22:52:25 76
原创 pat a 1136
才知道char不能直接和string相加,用了一个效率很低的方法转换,但是好记…#include <iostream>#include <cstring>#include <algorithm>using namespace std;bool judge(string a){ int len=a.length(); for(int i=0;i&l...
2020-02-13 21:33:00 462
原创 pat a 1132
#include <iostream>#include <cstring>using namespace std;int main(){ int n; cin>>n; for(int i=0;i<n;i++){ string str; cin>>str; string a,b; int len=str.length...
2020-02-13 17:33:29 85
原创 pat a 1128
关于皇后对角线的解释:如果两个皇后处于对角线上,那么两者构成的斜率要么是1,要么是-1,列出式子是(v[j]-v[k])/(j-k)=±1,经过变形就得到了下面代码中的效果。#include <iostream>#include <algorithm>#include <vector>using namespace std;int main(){...
2020-02-13 00:02:35 127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人