自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

原创 1146 Topological Order (25 分)

本题考察拓扑序列的判断方法坑点如下1,作为一个拓扑序列,依次把序列中的数取出,使得该数所连接的数的入度减一,在此情况下,每个数的入度均应该为零2,数组的拷贝(参考柳婼学姐)下面的代码将整型in数组拷贝到vector容器tin中vector<int> tin(in, in+n+1);整体代码如下#include<bits/stdc++.h>using namespace std;bool flag;vector<int>v;int n,m,q,b;

2022-03-02 18:46:18 76

原创 1150 Travelling Salesman Problem (25 分)

旅行商问题,首先判断是否为环路,之后判断是否为简单环路,最后输出最短距离坑点如下;1,判断所给图中连续的连点之间是否连通2,用set和vector结合的方式来判断是为简单回路整体代码如下#include<bits/stdc++.h>using namespace std;const int INF=0x3fffffff;int n,m,k,num,b,w,sdis,snum;int G[210][210];set<int>s;vector<int>t

2022-03-01 15:41:10 74

原创 1142 Maximal Clique (25 分)

判断是否图中任意两点两两相连,并判断是否存在图外一点与图中任意一点均存在连线本题坑点如下1,注意条件判断,一个一个依次判断;整体代码如下#include<bits/stdc++.h>using namespace std;set<int>s;vector<int>temp;int vis[210];int G[210][210];int isc,ismc,noc;int main(){ int nv,ne,m,k,num; int v

2022-03-01 14:28:46 84

原创 1126 Eulerian Path (25 分)

欧拉图的判断;坑点如下;1,若所有节点的度都为偶数,则为欧拉图2,若只有两个节点的度为偶数,则为半欧拉图3,另外还需判断可连通性整体代码如下#include<bits/stdc++.h>using namespace std;int n,m;vector<int>v[510];int odd=0;bool vis[510];int cnt=0;void dfs(int s){ vis[s]=true; if(v[s].size()==0)r

2022-02-28 23:16:22 101

原创 1122 Hamiltonian Cycle (25 分)

本题考查哈密顿图的判断哈密顿图 :经过图中所有的节点的圈坑点如下1,若图中有n个不同的顶点,则哈密顿图中的顶点数目一定为n+1;2,第一个顶点一定与最后一个顶点相同3,还需判断题目中所给的路径之间是否相连;整体代码如下#include<bits/stdc++.h>using namespace std;int n,m,k,num,b;int G[210][210];vector<int>path;set<int>s;bool flag1,flag

2022-02-28 22:43:55 32

原创 内燃机设计 程序2.0

源程序#include <cstdio>#include <math.h>#include<iostream>using namespace std;#define PI 3.14159int main(){double a[72]={0.0857,0.0894,0.0833,0.0838,0.0822,0.0818,0.0841,0.0845,0.0834,0.0858,0.0862,0.0855,0.0892,0.0919,0.0903,0.0929

2022-02-24 15:26:25 156

原创 内燃机设计 程序二

源程序如下#include <cstdio>#include <math.h>using namespace std;#define PI 3.1415926double function(double z)//定义符号函数{double N,M;N=fabs(z);M=z/N;return M;}double a[72][2]={{0,0.0857},{10,0.0894},{20,0.0833},{30,0.0838},{40,\0.0822},{50,

2022-02-23 21:50:49 115

原创 内燃机设计,程序一

源程序如下#include <cstdio>#include <math.h>using namespace std;#define PI 3.1415int main(){double a[72][2]={{0,0.0857},{10,0.0894},{20,0.0833},{30,0.0838},{40,\0.0822},{50,0.0818},{60,0.0841},{70,0.0845},{80,0.0834},{90,0.0858},{100,\0.086

2022-02-23 21:21:57 376

原创 1161 Merging Linked Lists (25 分)

链表合并模板题,注意分清楚边界条件#include<bits/stdc++.h>using namespace std;struct Node{ int data,ad,next;}node[100100];vector<Node>p1,p2,p3;int main(){ int f1,f2,n,ad,data; cin>>f1>>f2>>n; for(int i=0;i<n;i++){

2021-09-11 09:36:48 264

原创 7-4 Structure of a Binary Tree (30 分)

2019年pat春季第四题本题考察知识点有,树的重建,字符串处理,查找结点对应指正,查找树中结点的父节点,判断树的结点的深度,判断树是否为满树(除叶结点外都有左右子树)。**#include<bits/stdc++.h>using namespace std;int n,m;int post[35],in[35];bool flag=true;struct Node{ int data,level,father; Node* lchild; Node* r

2021-09-10 21:00:02 53

原创 7-3 Telefraud Detection (25 分)

图论+并查集问题坑点如下1,利用line数组来依次判断可怀疑对象,将嫌疑人依次放入temp数组。2,在temp数组中用DFS方法,将所有存在相互通话的嫌疑人合并。3,DFS过程中temp1的顺序被打乱,需要重新排序。3,vector<vector>ans中sort函数的用法,如图,按照第一个元素大小排列,如相同,则按照下一个元素大小排列,直到排列完成。3 43 4 54整体代码如下#include<cstdio>#include<algorithm&

2021-09-05 13:44:33 85

原创 7-2 Anniversary (25 分)

19年春季考试中的一道题坑点如下1,substr的2种用法:(参考柳婼)假设:string s = “0123456789”;string sub1 = s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 = “56789”string sub2 = s.substr(5, 3); //从下标为5开始截取长度为3位:sub2 = “567”异常:若pos的值超过了string的大小,则substr函数会出现一个out_of_range异常;若pos+len的值超过

2021-09-04 13:05:36 53

原创 1155 Heap Paths (30 分)

堆问题,判断一个堆是最大堆还是最小堆,并右到左输出从根结点到叶子结点的所有路径。坑点如下1,用DFS来求路径。用push和pop来维护路径。2,以此遍历所有结点,从而判断一个堆是最大堆还是最小堆。整体代码如下#include<cstdio>#include<algorithm>#include<cmath>#include<iostream>#include<vector>using namespace std;vector&

2021-09-01 19:28:40 61

原创 1153 Decode Registration Card of PAT (25 分)

排序问题坑点如下1,比较函数的传参尽量用引用传参。2,单作为映射可以用unordered_map,内部元素是无序的。代码如下#include<cstdio>#include<cstring>#include<iostream>#include<unordered_map>#include<vector>#include<algorithm>using namespace std;struct Node{

2021-09-01 19:00:25 48

原创 1151 LCA in a Binary Tree (30 分)

已知二叉树的先序和中序遍历,求其最低的公共祖先结点。本题和1143十分相似,不用建树,直接用map把树映射成二叉搜索树,之后按照1143同样的方法就容易解决了。坑点如下1,二叉搜索树的中序遍历一定是一个从小到大的数组,可以利用这一性质来进行映射。#include<cstdio>#include<map>#include<vector>using namespace std;map<int,int>re,y;int main(){ in

2021-09-01 14:31:54 63

原创 1149 Dangerous Goods Packaging (25 分)

考察数据的处理。坑点如下1,本题可采用map<int,vector>将某一货物的不兼容货物全部表示出来2,对于map,不在map键值对中的键对应的值为0;整体代码如下#include<cstdio>#include<algorithm>#include<vector>#include<map>#include<cstring>#include<set>#include<iostream>u

2021-09-01 10:36:21 88

原创 1148 Werewolf - Simple Version (20 分)

狼人杀简化版,之前没接触过这类题所以做起来有些吃力。参考了柳神的代码。柳婼代码链接坑点如下1,做本题基本思想就是枚举。列出所有情况,本题中是先假设好两个狼人,再确定出哪些人在说谎。2,本题用整型而不用bool来判断有其好处,可以用乘法和加法运算来确定各个人的身份。3,注意有No Solution情况,也要输出。整体代码如下#include<vector>#include<cmath>#include<cstdio>using namespace std;

2021-09-01 09:24:51 68

原创 1145 Hashing - Average Search Time (25 分)

hash问题,考察的知识点有,查询次数计算,平方探针解决冲突的原理,素数的判断方法。关键词Quadratic probing 平方探针坑点如下1,素数的判断方法bool isprime(int x){ if(x<=1)return false; for(int i=2;i*i<=x;i++){ if(x%i==0)return false; } return true;}注:1既不是质数也不是合数。整体代码如下#include<cstd

2021-08-31 12:25:19 49

原创 1135 Is It A Red-Black Tree (30 分)

判断所给的????是否是红黑树,本题考察了红黑树的定义坑点如下红黑树的判据1,根结点一定是黑2,当前结点为红,其两个孩子结点一定是黑3,任意一个结点到其所有根结点的路径含有相同的黑结点个数(判断方式)4,注意判断代码的写法从根结点依次判断左右结点。bool judge1(node* root){ if(root==NULL)return true; if(root->data<0) { if(root->lchild!=NULL&&ro

2021-08-30 11:56:10 37

原创 1143 Lowest Common Ancestor (30 分)

二叉搜索树找第一个祖先结点。坑点如下1,先序遍历,找到的第一个符合要求的结点一定是二者的最小祖先结点证明如下如果两数分布在根结点两端,直接找到,如果两数在左子树,则按根左右可找到,如果都在右子树,则根左找完后均找不到,之后再找右子树,一定能找到。整体代码如下#include<bits/stdc++.h>using namespace std;map<int,int>d;int main(){ int m,n,k1,k2,l,a; scanf("%d%

2021-08-29 21:52:56 58

原创 1142 Maximal Clique (25 分)

图问题,本题考察的知识点有,判断图中的最大全连通分量(团clique) 。坑点如下1,判断全连通的方法,如2,3,4,5四个结点顺序2,3,4,5.3,4,5.4,5.则四个结点全连通。整体代码如下#include<cstdio>#include<cstring>#include<vector>#include<set>using namespace std;vector<int>aj[210];int e[210][2

2021-08-29 20:45:40 65

原创 1140 Look-and-say Sequence (20 分)

字符串处理问题,写一个函数即可坑点如下1,注意理解题目2,巧用string的加法 ans+=s[i-1]+to_string(num); 整体代码如下#include<iostream>using namespace std;string look(string s){ string ans; int num=1; int i; for( i=1;i<s.size();i++){ if(s[i]==s[i-1])num++; el

2021-08-29 19:31:57 36

原创 1139 First Contact (30 分)

图问题,考察的知识点有,字符串hash,vector中结构体数组的排序。坑点如下1,如果用int读入数据,则对-0000的数据无法判断性别,故用string储存。2,注意输出格式为04d%3,暗恋的人性别相同时找同性朋友时要避免找到暗恋的人。4,本题只用找同性朋友,因此用vector容器储存同性朋友。整体代码如下#include<bits/stdc++.h>using namespace std;int n,m,k;bool fri[310][310];unordered_

2021-08-27 18:17:10 70

原创 1136 A Delayed Palindrome (20 分)

字符串处理问题,本题考察的知识点有,回文字符的判断,大数的计算方法。坑点如下1,要单独判断给出的数是否是回文字符2,reverse函数的用法 reverse(t.begin(),t.end());3,大数的计算方法string Add(string a,string b){ int sp=0,num=0,cnt=0; string s; for(int i=a.size()-1;i>=0;i--){ num=a[i]-'0'+b[i]-'0'+cn

2021-08-27 15:58:34 37

原创 1137 Final Grading (25 分)

排序问题。考察了map的用法和结构体的使用坑点如下1,题目中给出三个list,每个的number数目不超过10000,则总的number不超过30000.2,注意向上取整的方法#include<cstdio>#include<cstring>#include<map>#include<iostream>#include<algorithm>using namespace std;struct Node{ string i

2021-08-27 15:38:10 56

原创 1134 Vertex Cover (25 分)

图问题,主要考察边的存储方式。坑点如下1,可将边都存入vector容器中,从而依次遍历所有边,如有一条不满足要求,则输出No,否则输出Yes整体代码如下#include<cstdio>#include<vector>#include<cstring>#include<set>using namespace std;vector<int>v[10010];set<int>s;bool vis[10010];int

2021-08-26 09:27:06 70

原创 1133 Splitting A Linked List (25 分)

链表处理问题。坑点如下1,注意链表的结构struct Node{ int id; int data; int next; int code;}node[maxn]; 2,链表的处理方式,对结构体按序号进行排序bool cmp(Node a,Node b){ return a.code<b.code;}整体代码如下#include<cstdio>#include<algorithm>#include<vect

2021-08-26 09:08:05 37

原创 1132 Cut Integer (20 分)

很简单的一道题,考察的知识点有,string容器的使用,stoi函数的使用坑点如下1,一个数能整除两个数的乘积,则这个数可以分别整除两个数2,注意零不能做分母,否则会出现浮点错误。3,string中的函数,获取字符串的子串,参数分别是初始位置和长度。pre=temp.substr(0,num/2);整体代码如下#include<cstdio>#include<cstring>#include<iostream>using namespace std;

2021-08-25 16:22:48 35

原创 1130 Infix Expression (25 分)

给一个二叉树,输出中缀表达式,且加上括号表示运算的优先级~~。参考柳神的做法柳婼代码链接坑点如下1,给二叉树各节点赋值高度的方法2,中缀表达式递归的写法如果当前为叶子结点,直接返回自己的字符串,如果为非叶子结点(右子树不为空),那么返回递归左+当前字符串+递归右结点,并加上括号。如果左右结点有空的,返回字符串""#include<cstdio>#include<algorithm>#include<cstring>#include<iostrea

2021-08-22 22:20:16 63

原创 1129 Recommendation System (25 分)

用户推荐问题,本题考查的知识点有,对输入的数据按照出现次数及其编号进行排序,边输入变排序。参考柳神的写法,柳婼代码链接坑点如下1,set中存放结构题数组及其处理,注意结构体初始化方式。使得结构体在被存入set中时可以自动按照要求排序。struct Node{ int id; int number; Node(int a,int b):id(a),number(b){} friend bool operator<(const Node &a,const

2021-08-22 16:13:31 34

原创 1127 ZigZagging on a Tree (30 分)

树的生成问题。已知树的后序和中序遍历,求左右交替的层序遍历。本题考察的要点有已知树的后序和中序遍历,生成一颗树。再生成的树的各个结点中赋值深度。将各个深度的结点存储到数组中,按需输出坑点如下1,改变放入队列的左右孩子顺序无法解决这道问题,因为上一层中的最左端结点首先被压入了队列中。2,在存储的数组中,深度为偶数时,逆序输出,为奇数时,顺序输出(从0开始)。整体代码如下#include<cstdio>#include<algorithm>#include&lt

2021-08-21 17:28:53 49

原创 1125 Chain the Ropes (25 分)

贪心问题,要想生成最长绳子,应使得其中长段的绳子对折次数尽可能的少。坑点如下1,这题要求输出向下取整,开始理解成四舍五入了。附上四舍五入函数int round(double x){ return int(x+0.5);}整体代码如下#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;int a[10010];int main(){

2021-08-21 17:18:02 82

原创 1123 Is It a Complete AVL Tree (30 分)

平衡二叉树问题,本题考察的知识点有,平衡二叉树的生成,左旋,右旋,如何判断一个树是否是完全二叉树,二叉树的层序遍历。坑点如下1,将左旋函数和右旋函数写反了导致段错误。整体代码如下#include<cstdio>#include<algorithm>#include<queue>using namespace std;struct Node{ int data,height; Node* lchild; Node* rchild;}

2021-08-20 21:40:28 70

原创 1119 Pre- and Post-order Traversals (30 分)

已知先序遍历和后序遍历,求中序遍历本题我参考了柳婼的做法柳神代码链接分析如下整体代码如下#include<cstdio>#include<vector>using namespace std;bool flag=true;int n;int post[35],pre[35];int num=0;vector<int>in;void getIN(int prel,int prer,int postl,int postr){ if(prel

2021-08-20 14:57:24 60

原创 1117 Eddington Number (25 分)

数学问题参考柳神的解法从大到小排序后结果为10、9、8、8、7、7、6、6、3、2。坑点如下1,根据排序后的数组可得知骑车大于等于 a[i] 英里的天数有 i+1 天,因为题目中要求超过E英里且所有的英里数为整数,所以可得知骑车超过 a[i]-1 英里的天数有 i+1 天2,最后求的是满足a[i]>=i+2的最大i+1;整体代码如下#include<bits/stdc++.h>using namespace std;int number[100100];int main

2021-08-20 10:08:35 53

原创 1118 Birds in Forest (25 分)

并查集问题,考察的点有,集合的合并,集合个数的计算,各集合中元素数量统计。坑点如下1,在函数内定义数组时注意要赋值0。整体代码如下#include<bits/stdc++.h>using namespace std;int father[10010];int vis[10010]={false};int cnt[10010];int n,q;int find(int x){ while(father[x]!=x){ x=father[x]; }

2021-08-20 09:38:52 45

原创 1115 Counting Nodes in a BST (30 分)

二叉搜索树的遍历,用DFS方法即可代码如下#include<cstdio>#include<vector>using namespace std;struct Node{ int data; Node* lchild; Node* rchild;};void insert(Node* &root,int data){ if(root==NULL){ root=new Node; root->data=

2021-08-19 13:31:32 41

原创 1114 Family Property (25 分)

这题用到了并查集的思想,我的代码参考了柳婼的代码。柳神代码链接坑点如下1,统计人数时不能只遍历输入的id,还要遍历与之相关的人,因此开vis数组,记录所有出现的人。2,比较函数注意要写return(在这一点上卡了很久)3,注意find函数写法,不建议使用递归,易错。int find(int x){ while(father[x]!=x){ x=father[x]; } return x;}整体代码如下#include<bits/stdc++.h&gt

2021-08-19 13:09:34 96

原创 1112 Stucked Keyboard (20 分)

字符串处理问题,参考了柳婼的代码。柳神代码链接坑点如下1,本题在字符串末尾再添加一个字符,否则当最后几个字符相等时存在判断问题。(当不相等时才能做出判断)2,我的方法,将可能存在问题的字符放入set容器,开nobroken数组存放一定没坏的键。最后判断时将set中有而nobroken中没有的输出即可整体代码如下#include<bits/stdc++.h>using namespace std;bool nobroken[256];int main(){ int k;

2021-08-19 10:47:48 64

原创 1108 Finding Average (20 分)

本题用以下两个函数十分容易解决。sscanf() – 从一个字符串中读进与指定格式相符的数据sprintf() – 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sscanf() 的用法 sscanf(a,"%lf",&temp); printf("%lf\n",temp);输入输出2,sprintf的用法 sprintf(b,"%.2f",temp); printf("%s\n",b);整体代码如下#include<cstdio

2021-08-18 10:14:41 47

空空如也

空空如也

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

TA关注的人

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