
PTA好题
巴扎嘿呀
学习知识图谱中~欢迎交流
展开
-
1155 Heap Paths(dfs+堆)
#include<bits/stdc++.h>using namespace std;int a[10010];int n;bool st[10010];vector<int> v;void dfs(int u){ if(u*2>n&&u*2+1>n){ if(u<=n){ for(int i=0;i<v.size();i++){ if(i==v.size()-1) printf("%d\n",v[i]); .原创 2021-03-12 19:49:32 · 77 阅读 · 0 评论 -
1147 Heaps(判断大/小根堆)
#include<bits/stdc++.h>using namespace std;const int N=1010;int a[N];int n;vector<int> v;void postorder(int u){ if(u*2<=n) postorder(u*2); if(u*2+1<=n) postorder(u*2+1); v.push_back(a[u]);}int main(){ int T;scanf("%d%d",&.原创 2021-03-10 20:44:30 · 311 阅读 · 0 评论 -
1143 Lowest Common Ancestor(二叉搜索树LCA)
#include<bits/stdc++.h>using namespace std;const int N=1e4+10;int pre[N];unordered_map<int,bool> mp;int main(){ int n,m;scanf("%d%d",&n,&m); for(int i=0;i<m;i++){ scanf("%d",&pre[i]); mp[pre[i]]=true; } while(n--){.原创 2021-03-10 20:07:32 · 97 阅读 · 0 评论 -
1139 First Contact(unordered_map)
#include<bits/stdc++.h>using namespace std;const int N=1e4+10;vector<int> v[N];unordered_map<int,bool> mp;struct node{ int x,y;};bool cmp(node a,node b){ if(a.x==b.x) return a.y<b.y; else return a.x<b.x;}int main(){ in.原创 2021-03-10 16:56:17 · 90 阅读 · 0 评论 -
1135 Is It A Red-Black Tree (红黑树)
#include<bits/stdc++.h>using namespace std;const int N=55;int cnt;int root;struct node{ int val; int l,r;}a[N];void add(int u,int x){ if(abs(x)<=abs(a[u].val)){ if(a[u].l==0){ a[u].l=cnt; a[cnt].val=x; cnt++; } else add(a.原创 2021-03-09 23:04:05 · 111 阅读 · 0 评论 -
1127 ZigZagging on a Tree(中序+后序+bfs)
#include<bits/stdc++.h>using namespace std;const int N=10010;struct node{ int l,r;}a[N];int in[N];int post[N];int ceng[N];vector<int> v[31];int mx=0;void solve(int &cnt,int inl,int inr,int postl,int postr){ if(inl>inr) retur.原创 2021-03-09 18:12:44 · 81 阅读 · 0 评论 -
1119 Pre- and Post-order Traversals(先序和后序遍历还原二叉树)
#include<bits/stdc++.h>using namespace std;const int N=35;int pre[N];int post[N];bool flag;vector<int> in;void get(int prel,int prer,int postl,int postr){ if(prel==prer){ in.push_back(pre[prel]); return ; } if(pre[prel]==post[pos.原创 2021-03-09 15:43:33 · 160 阅读 · 0 评论 -
1118 Birds in Forest(并查集)
#include<bits/stdc++.h>using namespace std;const int N=1e4+100;int p[N];bool st[N];int num[N];int tt=0;int find(int x){ if(p[x]!=x) p[x]=find(p[x]); return p[x];}void bing(int a,int b){ int fa=find(a); int fb=find(b); if(fa!=fb){ p[f.原创 2021-03-09 00:22:00 · 89 阅读 · 0 评论 -
1115 Counting Nodes in a BST(二叉搜索树)
#include<bits/stdc++.h>using namespace std;const int inf=0x3f3f3f3f;const int N=110;int mx=0;int a[N];int e[1010];int lson[1010],rson[1010];int root=inf;void insert(int cnt,int x){ if(e[x]<=e[cnt]){ if(lson[cnt]==inf) lson[cnt]=x; e.原创 2021-03-08 00:27:19 · 101 阅读 · 0 评论 -
1114 Family Property(并查集)
#include<bits/stdc++.h>using namespace std;const int N=1010;const int M=10010;int m[M],aset[M],aare[M];struct node{ int id,m; double aset,aare;};vector<node> v;int p[M];bool cmp(node x,node y){ if(x.aare==y.aare) return x.id<y.i.原创 2021-03-07 23:57:37 · 89 阅读 · 0 评论 -
1111 Online Map(dijkstra)
#include<bits/stdc++.h>using namespace std;const int INF=0x3f3f3f3f;const int N=550;int n,m;int le[N][N];int tmm[N][N];bool st[N];int d1[N],d2[N],d3[N];int num[N];int p1[N],p2[N];void dij1(int s,int e){ memset(st,false,sizeof st); memse.原创 2021-03-06 16:26:53 · 83 阅读 · 0 评论 -
1110 Complete Binary Tree(判断完全二叉树)
#include<bits/stdc++.h>using namespace std;const int N=25;bool st[N];int lson[N];int rson[N];int ans=0;bool bfs(int root){ queue<int> q; q.push(root); while(q.size()){ int a=q.front(); q.pop(); if(lso.原创 2021-03-06 15:47:44 · 159 阅读 · 0 评论 -
1109 Group Photo(模拟)
#include<bits/stdc++.h>using namespace std;int st[12][10010];struct P{ string name; int h;}a[10010];bool cmp(P a,P b){ if(a.h==b.h) return a.name<b.name; else return a.h>b.h;}int main(){ int n;scanf("%d",&n); .原创 2021-03-06 14:46:41 · 83 阅读 · 0 评论 -
Social Clusters (带size并查集)
#include<bits/stdc++.h>using namespace std;const int N=1e3+10;int a[N];int p[N];int n;bool st[N];int size[N];int hobby[N];vector<int> v;int find(int x){ if(p[x]!=x) p[x]=find(p[x]); return p[x];}void bing(int a,int b){ int fa=fi.原创 2021-03-06 11:10:52 · 119 阅读 · 0 评论 -
Lowest Price in Supply Chain(dfs)
#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int h[N],e[2*N],ne[2*N],idx;double p,r;int num=1;int mn=0x3f3f3f3f;void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}void dfs(int u,int cnt){ if(cnt>mn) return ; if(.原创 2021-03-06 10:24:14 · 80 阅读 · 0 评论 -
1105 Spiral Matrix(螺旋)
#include<bits/stdc++.h>using namespace std;int m,n;const int N=1e4+100;int a[N];const int M=1e3+10;int st[M][M];bool check(int x,int y){ if(st[x][y]||x>m||x<=0||y<=0||y>n) return true; return false;}int main(){ int k;scanf("%.原创 2021-03-06 09:41:37 · 108 阅读 · 0 评论 -
L3-1 那就别担心了(记忆化搜索)
#include<bits/stdc++.h>using namespace std;const int N=550;int n,m;int x,y;int e[N*N],ne[N*N],h[N],idx;int deg[N];int num[N];void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}bool f=false;//x为起点 y为终点 int dfs(int u){ if(num[u]!=-.原创 2020-11-29 15:14:23 · 1103 阅读 · 4 评论 -
7-15 水果忍者 (计算几何+思维)
#include<bits/stdc++.h>using namespace std;const int INF=0x3f3f3f3f;const int N=1e4+100;struct P{ double x,y1,y2;}a[N];int main(){ int n;scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%lf%lf%lf",&a[i].x,&a[i].y1,&a[i].y2).原创 2020-10-08 16:42:23 · 437 阅读 · 0 评论 -
7-15 长城 (凸包)
#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e5+100;set<int> s;struct Point{ int x,y;}p[N];Point ch[N];bool cmp(Point x,Point y){ return x.x<y.x||(x.x==y.x&&x.y<y.y);//x从小到大排序,如果x相同则y从小.原创 2020-10-08 15:36:18 · 342 阅读 · 0 评论 -
7-13 天梯地图 (Dijkstr)
#include<bits/stdc++.h>using namespace std;const int INF=0x3f3f3f3f;const int N=550;int n,m;int le[N][N];int tmm[N][N];bool st[N];int d1[N],d2[N],d3[N];int num[N];int p1[N],p2[N];void dij1(int s,int e){ memset(st,false,sizeof st); memse.原创 2020-10-08 14:16:24 · 547 阅读 · 0 评论 -
7-14 直捣黄龙 (dfs)
#include<bits/stdc++.h>using namespace std;const int N=250;int n,m;//int start,endd;int sum,minlen=0x3f3f3f3f,maxsave,allkill;vector<string> ans;map<string,int> mp;int g[N][N];bool st[N];struct P{ string id; int num;}a[N];v.原创 2020-10-07 23:22:39 · 402 阅读 · 0 评论 -
7-11 玩转二叉树(中序遍历和先序遍历建树)
#include<bits/stdc++.h>using namespace std;int n;const int N=35;int z[N],x[N];int ls[N],rs[N];int num;void solve(int a,int b,int c,int d){ int t=x[c]; int i; for(i=a;i<=b;i++){ if(z[i]==t){ break; } } if(i==a){ if(c+1<=d){.原创 2020-10-07 18:01:10 · 200 阅读 · 0 评论 -
7-12 关于堆的判断 (堆)
#include<bits/stdc++.h>using namespace std;const int N=1010;const int M=10010;int h[N];int size;int wei[M*2+100];void down(int u){ int t=u; if(u*2<=size&&h[u*2]<h[t]) t=u*2; if(u*2+1<=size&&h[u*2+1]<h[t]) t=u*2+.原创 2020-10-07 17:59:03 · 388 阅读 · 0 评论 -
L1-8 估值一亿的AI核心代码(模拟)
#include<bits/stdc++.h>using namespace std;string s;bool shu(int i){ if(s[i]>='0'&&s[i]<='9') return true; return false;}bool kong(int i){ if(s[i]==' ') return true; return false;}bool zimu(int i){ if((s[i]>='a'&&.原创 2020-10-04 02:12:19 · 533 阅读 · 0 评论