PAT_advanced2
PAT_advanced2
fftx_00
这个作者很懒,什么都没留下…
展开
-
【PAT】1072 Gas Station (30 分)
#include <bits/stdc++.h>using namespace std;int n,m,k,Ds;struct node{ int v,dist;};map<string,int> mp;vector<node> G[1010];//n:house num//m:候选 气站 num//k:路数量//Ds:气站最大服务范围int dist[1010],visited[1010];priority_queue<pair&l.原创 2022-02-22 23:34:22 · 319 阅读 · 1 评论 -
【PAT】1087 All Roads Lead to Rome (30 分)
三个标尺1.cost最小【边权】2. happiness最大【点权】3.average_happiness最大【经过结点数最少】#include <bits/stdc++.h>using namespace std;#define maxn 210int n,k;string s1;struct citys{ string name; int happiness;};int cost[maxn][maxn];//cost[i][j]=i->j_c.原创 2022-02-15 18:56:36 · 509 阅读 · 0 评论 -
【PAT】1091 Acute Stroke (30 分)
#include <bits/stdc++.h>using namespace std;int m,n,l,t;int arr[1300][130][80];//1286*128*60struct node{ int x,y,z;};//(1,0,0) (0,1,0) (0,0,1)//(-1,0,0) (0,-1,0) (0,0,-1)int X[6]={1,0,0,-1,0,0};int Y[6]={0,1,0,0,-1,0};int Z[6]={0,0,1.原创 2022-02-14 23:36:23 · 445 阅读 · 0 评论 -
【PAT】1103 Integer Factorization (30 分)
大的index开头,当前方案还从index开始,下一方案从index-1开始。当前方案下一个还可以是index#include <bits/stdc++.h>using namespace std;int n,k,p;#define maxn 410vector<int> t;void initTablet(){ for(int i=0;pow(i,p)<=n;i++){ t.push_back(pow(i,p)); .原创 2022-02-14 16:51:43 · 332 阅读 · 0 评论 -
【PAT】1111 Online Map (30 分)
#include <bits/stdc++.h>using namespace std;int n,m;int s1,s2;#define maxn 520int s[maxn][maxn];int t[maxn][maxn];int s_dist[maxn],s_path[maxn],s_tdist[maxn],collected[maxn];struct cmp{ bool operator () (pair<int, int> a, pair<.原创 2022-02-14 00:39:16 · 216 阅读 · 0 评论 -
【PAT】1122 Hamiltonian Cycle (25 分)
#include <bits/stdc++.h>using namespace std;int n,m,k;int G[220][220];vector<int> path;int num[220];bool isHam(){ fill(num,num+220,0); //1:是不是环 if(path[0]!=path[path.size()-1]) return false; //2:是不是简单路径:每个结点都访问了且仅访问一次,起点除.原创 2022-02-13 21:37:38 · 92 阅读 · 0 评论 -
【PAT】1126 Eulerian Path (25 分)
区别连通和相邻#include <bits/stdc++.h>using namespace std;//欧拉路径:访问且仅访问每个结点一次//欧拉环:起点=终点的欧拉路径//Eulerian:连通图,所有结点偶数度 ->有一个欧拉环//semi-Eulerian:两个结点奇数度,其中一个是起点,一个是终点#define maxn 520vector<int> G[maxn];int visited[maxn];int cnt=0;void df..原创 2022-02-13 20:51:43 · 322 阅读 · 0 评论 -
【PAT】1130 Infix Expression (25 分)
#include <bits/stdc++.h>using namespace std;struct node{ string data; int lchild,rchild;};vector<node> T;int Troot=-1;void in_order(int root){ if(root==-1) return; if(T[root].lchild!=-1 && T[root].rchild!=-1 &.原创 2022-02-13 19:31:08 · 154 阅读 · 0 评论 -
【PAT】1131 Subway Map (30 分)
先建图!!!利用前后驱关系建立无向图;几号线其实属于额外信息,利用hash打表;第一标尺:找经过站点最少的第二标尺:找换乘次数最少的#include <bits/stdc++.h>using namespace std;unordered_map<int,int> line;//v[i][j].line=line[i*10000+j]vector<vector<int> > v(10000);vector<int> t.原创 2022-02-13 17:14:07 · 336 阅读 · 0 评论 -
【PAT】1142 Maximal Clique (25 分)
#include <bits/stdc++.h>using namespace std;#define maxn 210int nv,ne;int G[maxn][maxn];int tmp[maxn];//通过tmp[]=1,标记当前clique,不然找不在当前clique中的很麻烦int isClique(int k){ //任意两个均连通 ->是clique for(int i=1;i<=nv;i++){ if(tmp[i]==.原创 2022-02-13 15:55:28 · 215 阅读 · 0 评论 -
【PAT】1150 Travelling Salesman Problem (25 分)
#include <bits/stdc++.h>using namespace std;#define maxn 210int n,m,k,tk;struct node{ int v,dist;};vector<node> G[maxn];//[1,n]int kPath[maxn];//[1,tk]int sid=-1,ss=INT_MAX;int vis[maxn];void isTS(int times){ fill(vis,vis+.原创 2022-02-08 20:25:06 · 325 阅读 · 0 评论 -
【PAT】1155 Heap Paths (30 分)
#include <bits/stdc++.h>using namespace std;vector<int> v;int flag_heap=0;vector<int> ans;void dfs(int root){ ans.push_back(root); if((root*2+1)>=v.size() && (root*2+2)>=v.size()){//叶子 for(int i=0;i&l.原创 2022-02-02 23:55:44 · 283 阅读 · 0 评论 -
【PAT】1004 Counting Leaves (30 分)
#include <bits/stdc++.h>using namespace std;const int MAXN = 110;vector<int> T[MAXN];int num[MAXN];int max_depth=1;void countLeaves(int index,int depth){ if(depth>max_depth) max_depth=depth; if(T[index].size()==0){//叶结点 .原创 2022-02-02 19:16:55 · 381 阅读 · 0 评论 -
【PAT】1020 Tree Traversals (25 分)
#include <iostream>#include <vector>#include <queue>using namespace std;struct node{ int data; int lchild,rchild;};vector<int> post,in;vector<node> T;int t_index=0;int lca(int inl,int inr,int postRoot){ .原创 2022-01-30 21:58:16 · 669 阅读 · 0 评论 -
【PAT】1043 Is It a Binary Search Tree (25 分)
pre不建树还原二叉树#include <iostream>#include <vector>using namespace std;vector<int> pre,post;int n;int isMirror=0;void getPost(int root,int tail){ if(root>tail) return; int i=root+1,j=tail; if(!isMirror){ w..原创 2022-01-29 22:32:26 · 288 阅读 · 0 评论 -
【PAT】1053 Path of Equal Weight (30 分)
dfs遍历树,求路径中结点的权重和,最后按照路径权重排序输出#include <iostream>#include <vector>#include <algorithm>using namespace std;int s;struct node{ int w; vector<int> children;}T[100];vector<vector<int> > path;void dfs.原创 2022-01-29 20:43:57 · 795 阅读 · 0 评论 -
【PAT】1057 Stack (30 分)
#include <iostream>#include <stack>using namespace std;const int maxn=100010;int cnt[maxn];//前缀和的树状数组序列(单点修改\区间查询)stack<int> s;int lowbit(int x){ return x&(-x);}void update(int x,int k){//单点修改: for(;x<maxn;x+=lowbit(.原创 2022-01-28 22:51:09 · 302 阅读 · 0 评论 -
【PAT】1064 Complete Binary Search Tree (30 分)
排序后,递归插入左-根-右子树#include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;struct node{ int data; int lchild,rchild;};int n;int v[1010];vector<node> T;int v_index=0;in..原创 2022-01-26 21:19:21 · 330 阅读 · 0 评论 -
【PAT】1066 Root of AVL Tree (25 分)
#include <iostream>#include <math.h>using namespace std;struct node{ int data; node* lchild,* rchild;};int getHeight(node* root){ if(!root) return 0; int l=getHeight(root->lchild); int r=getHeight(root->rchild).原创 2022-01-25 22:44:02 · 191 阅读 · 0 评论 -
【PAT】1079 Total Sales of Supply Chain (25 分)
#include <iostream>#include <vector>#include <math.h>using namespace std;vector<int> T[100010];double p,r;double total_sales=0;void dfs(int root,int depth){ if(T[root].size()==1 && T[root][0]<0){ tot.原创 2022-01-25 22:15:43 · 131 阅读 · 0 评论 -
【PAT】1086 Tree Traversals Again (25 分)
Push序列:相当于先序遍历序列prePop序列:相当于中序遍历序列in根据两序列还原二叉树#include <iostream>#include <stack>#include <vector>#include <math.h>using namespace std;stack<int> s;vector<int> pre,in;int flag_postOrder=0;void buildT(..原创 2022-01-25 19:50:09 · 242 阅读 · 0 评论 -
【PAT】1090 Highest Price in Supply Chain (25 分)
dfs从根开始比从叶子结点开始快得多,为了不超时->倒过来存#include <iostream>#include <vector>#include <math.h>using namespace std;vector<int> T[100010];//T[supplier_index]=indexint highest_num=0,highest_depth=-1;void dfs(int root,int depth)..原创 2022-01-25 19:21:44 · 57 阅读 · 0 评论 -
【PAT】1094 The Largest Generation (25 分)
求静态普通树每层的元素个数#include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;vector<int> T[110];int num[110];int max_depth=1;void dfs(int root,int depth){ num[depth]++; if(T[r.原创 2022-01-25 18:43:50 · 136 阅读 · 0 评论 -
【PAT】1099 Build A Binary Search Tree (30 分)
二叉搜索树的固定顺序:左子树<根<=右子树,按照中序dfs顺序插入即可#include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;struct node{ int data; int lchild,rchild;};vector<node> T;int num[110.原创 2022-01-25 18:17:54 · 115 阅读 · 0 评论 -
【PAT】1102 Invert a Binary Tree (25 分)
①输入的时候就左右子树互换,不用之后再递归互换了②递归左右互换#include <iostream>#include <vector>#include <queue>#include <string.h>using namespace std;struct node{ int lchild,rchild;};vector<node> T;int times[15];int flag_levelOrde..原创 2022-01-25 17:43:54 · 125 阅读 · 0 评论 -
【PAT】1106 Lowest Price in Supply Chain (25 分)
#include <iostream>#include <math.h>#include <vector>#include <queue>using namespace std;struct node{ vector<int> children;};int n;double p,r;vector<node> C;int cnt=1,min_depth=99999999;void dfs(int...原创 2022-01-22 23:02:28 · 295 阅读 · 0 评论 -
【PAT】1110 Complete Binary Tree (25 分)
注意静态二叉树读入的方式,scanf()容易出错#include <iostream>#include <vector>#include <queue>using namespace std;struct node{ int lchild,rchild;};vector<node> T;int num[21];int after=1,isComplete=1;int last=-1;void isCBT(int ro..原创 2022-01-21 22:48:23 · 532 阅读 · 0 评论 -
【PAT】1115 Counting Nodes in a BST (30 分)
//柳姐解法:dfs,关于最大层数明显易多了#include <iostream>#include <vector>#include <math.h>using namespace std;struct node{ int data; int height; node* lchild,* rchild;};node* InsertT(node* root,int x){ if(!root){ root=n.原创 2022-01-21 22:01:25 · 346 阅读 · 0 评论 -
【PAT】1119 Pre- and Post-order Traversals (30 分)
#include <iostream>#include <vector>using namespace std;vector<int> pre,post,in;bool unique=true;void dfs(int prel,int prer,int postl,int postr){ if(prel==prer){ //找到最后一个结点 in.push_back(pre[prel]); retu.原创 2022-01-20 22:55:45 · 81 阅读 · 0 评论 -
【PAT】1123 Is It a Complete AVL Tree (30 分)
#include <iostream>#include <math.h>#include <queue>using namespace std;struct node{ int data; node* lchild,* rchild;};int getHeight(node* root){ if(!root) return 0; int l=getHeight(root->lchild); int r=ge.原创 2022-01-21 22:46:10 · 250 阅读 · 0 评论 -
【PAT】1127 ZigZagging on a Tree (30 分)
先dfs还原树,然后按行顺序存储(bfs),输出时两行循环一次即可。//我的解法:#include <iostream>#include <vector>#include <queue>using namespace std;vector<int> in,post,result[31];//最多保证31行就够了struct node{ int data; node* lchild,* rchild;};s.原创 2022-01-20 20:02:52 · 378 阅读 · 0 评论 -
【PAT】1135 Is It A Red-Black Tree (30 分)
#include <iostream>#include <vector>#include <math.h>using namespace std;vector<int> arr;struct node{ int val; node *left,*right;};node* buildT(node* root,int v){ if(!root){ root=new node; root.原创 2022-01-18 14:56:44 · 174 阅读 · 0 评论 -
【PAT】1138 Postorder Traversal (25 分)
#include <iostream>#include <vector>#include <map>using namespace std;map<int,int> pos;vector<int> in,pre,post;void lca(int inl,int inr,int preRoot){ if(inl>inr) return; int inRoot=pos[pre[preRoot]]; l.原创 2022-01-18 12:43:26 · 449 阅读 · 0 评论 -
【PAT】1147 Heaps (30 分)
#include <iostream>#include <vector>using namespace std;vector<int> v;void postOrder(int pos,int n){ if(pos>=n) return; postOrder(pos*2+1,n);//注意hash位置 postOrder(pos*2+2,n); printf("%d%s",v[pos],pos==0?"\n":" ").原创 2022-01-18 12:19:56 · 370 阅读 · 0 评论 -
【PAT】1151 LCA in a Binary Tree (30 分)
#include <iostream>#include <vector>#include <map>using namespace std;map<int,int> pos;vector<int> in,pre;//可以直接用题中的序号作为下标,就不用建结点了void lca(int inl,int inr,int preRoot,int a,int b){ if(inl>inr) return; int i.原创 2022-01-15 22:30:38 · 197 阅读 · 0 评论