![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PTA数据结构题目集
学编程的蒟蒻
追求简短、逻辑清晰的代码
展开
-
案例7-1.5 与零交换 (25 分)
案例7-1.5 与零交换 (25 分)组合数学的圈问题,不懂的仔细模拟一下代码。#include<cstdio>#include<cmath>#include<cstring>#include<iostream>using namespace std;const int N=1e5+10;int a[N],vis[N],ret;void dfs(int x){ if(vis[x]) return; ret++; vis[x]=1;原创 2021-05-31 21:44:21 · 300 阅读 · 0 评论 -
基础实验7-2.3 德才论 (25 分)
基础实验7-2.3 德才论 (25 分)结构体排序#include<iostream>#include<cstdio>#include<algorithm>#include<string> using namespace std;struct p{ int a,b,c,f1,f2,f3; string s;}t[101000];bool cmp(p x,p y){ if(x.f1>y.f1) return 1; else i原创 2021-05-29 00:10:49 · 262 阅读 · 0 评论 -
基础实验7-2.2 插入排序还是堆排序 (25 分)
基础实验7-2.2 插入排序还是堆排序 (25 分)这题插入排序大家应该很好理解,就是堆排序可能不熟悉。根据这题的要求,是先进行堆排序建立个大根堆,然后每次取出最大值放在末尾,每次更新堆。#include<iostream>#include<cstdio>#include<algorithm>#include<string> using namespace std;int a[200],b[200],t[200];int f1=0,f2=0,n原创 2021-05-28 22:26:42 · 582 阅读 · 0 评论 -
进阶实验5-3.2 新浪微博热门话题 (30 分)
进阶实验5-3.2 新浪微博热门话题 (30 分)这题首先得看懂题目,最需要注意的就是每个单词之间要有空格,也就是题目说的分词。这里我还是喜欢用map,map大法好啊,我们每次存入单词的时候把其他的字符转化成一个空格一起存入就好了,然后用map计数。PS:首尾的空格记得去掉。#include<iostream>#include<string>#include<map>#include<set>using namespace std;map<原创 2021-05-23 17:02:38 · 152 阅读 · 0 评论 -
基础实验8-1.1 单身狗 (25 分)
基础实验8-1.1 单身狗 (25 分)#include<iostream>#include<set>using namespace std;int a[100000];set<int> s;int main(){ int n,m,x,y; set<int>::iterator it; cin>>n; for(int i=0;i<n;++i) { cin>>x>>y; a[x]=y;原创 2021-04-13 15:44:43 · 116 阅读 · 0 评论 -
基础实验7-2.4 PAT排名汇总 (25 分)
基础实验7-2.4 PAT排名汇总 (25 分)结构体排序#include<iostream>#include<cstdio>#include<string>#include<algorithm>using namespace std;struct student{ string a; int b,c,d;}s[200000];bool cmp1(struct student x,struct student y){ if(x.b&g原创 2021-04-13 15:44:32 · 457 阅读 · 0 评论 -
基础实验7-2.1 魔法优惠券 (25 分)
基础实验7-2.1 魔法优惠券 (25 分)#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>using namespace std;int a[1000010],b[1000010];int main(){ int n,m,z1=0,f1=0,z2=0,f2=0; cin>>n; for(i原创 2021-04-13 15:44:18 · 272 阅读 · 0 评论 -
基础实验6-2.6 最短工期 (25 分)
基础实验6-2.6 最短工期 (25 分)拓扑排序,AOE网#include<stdio.h>#include<string.h>const int N=1010;const int inf=0x3f3f3f;int map[N][N];int in[N]; int early[N];int ret=0; int n,m,ans=0;void t1() { for(int k=0;k<n;++k) { for(int原创 2021-04-13 15:44:04 · 426 阅读 · 0 评论 -
基础实验6-2.5 城市间紧急救援 (25 分)
基础实验6-2.5 城市间紧急救援 (25 分)多重判断的dijkstra#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int inf=0x3f3f3f3f; int map[550][550],vis[550],dis[550],path[550],cnt[550],sum[550],aa[550];int n,m,s,d;void dfs(in原创 2021-04-13 15:43:48 · 129 阅读 · 0 评论 -
案例6-1.7 公路村村通 (30 分)
案例6-1.7 公路村村通 (30 分)简单的最小生成树板子#include<iostream>#include<cstring>using namespace std;const int inf=0x3f3f3f3f;const int maxn=1010;int map[maxn][maxn];int vis[maxn],dis[maxn];int n,m;int prim(){ memset(dis,inf,sizeof(dis)); int sum=原创 2021-04-12 17:18:33 · 215 阅读 · 0 评论 -
进阶实验5-3.1 航空公司VIP客户查询 (25 分)
进阶实验5-3.1 航空公司VIP客户查询 (25 分)利用map容器,很简单#include<iostream>#include<cstdio>#include<string>#include<map>#include<set>using namespace std;map<string,int> m;char a[500];int main(){ int n,k; scanf("%d%d",&n,&原创 2021-04-12 16:54:21 · 251 阅读 · 0 评论 -
基础实验5-2.3 QQ帐户的申请与登陆 (25 分)
基础实验5-2.3 QQ帐户的申请与登陆 (25 分)#include<iostream>#include<string>#include<cstdio>#include<set>#include<map>using namespace std;set<string> s;map<string,string> m;int main(){ int n; cin>>n; while(n--)原创 2021-04-12 16:53:35 · 112 阅读 · 0 评论 -
基础实验5-2.2 电话聊天狂人 (25 分)
基础实验5-2.2 电话聊天狂人 (25 分)#include<iostream>#include<map>#include<string>#include<cstdio>#define ios ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);using namespace std;map<string,int> m;int main(){ ios int n; ci原创 2021-04-12 16:52:45 · 158 阅读 · 0 评论 -
进阶实验4-3.5 哈夫曼编码 (30 分)
进阶实验4-3.5 哈夫曼编码 (30 分)这是学了哈夫曼编码后立马写的,当时写出来感觉很不错哈哈哈#include<iostream>#include<string>#include<algorithm>using namespace std;const int inf=0x3f3f3f3f;int n,m;string s1[100];struct node { int w; int p; int l;原创 2021-04-12 16:51:54 · 482 阅读 · 0 评论 -
进阶实验4-3.2 Windows消息队列 (25 分)
进阶实验4-3.2 Windows消息队列 (25 分)#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;char s[100100][20];char a[20],b[20];int main(){ priority_queue<int,vector<int>,greater<int> &原创 2021-04-12 16:49:52 · 134 阅读 · 0 评论 -
基础实验4-2.8 部落 (25 分)
基础实验4-2.8 部落 (25 分)简单并查集#include<iostream>#include<set>using namespace std;set<int> s;int fa[10050];int find(int x){ if(fa[x]==x) return x; else return fa[x]=find(fa[x]); } int main(){ int n,q; cin>>n; int x,y,k,原创 2021-04-12 16:48:28 · 191 阅读 · 0 评论 -
基础实验4-2.7 修理牧场 (25 分)
基础实验4-2.7 修理牧场 (25 分)这题其实是利用了哈夫曼的思想,每次选出最小的两个数,构造一棵哈夫曼树即可。这里我用了STL中的优先队列,代码少,也好理解,STL是真的强大#include<iostream>#include<queue>using namespace std;int main(){ priority_queue<int,vector<int>,greater<int> > q; int n,x; cin&原创 2021-04-12 16:45:36 · 189 阅读 · 0 评论 -
案例4-1.7 文件传输 (25 分)
案例4-1.7 文件传输 (25 分)简单的并查集#include<iostream>#include<set>using namespace std;int fa[10010];set<int> s;int find(int x){ if(fa[x]==x) return x; else return fa[x]=find(fa[x]);}int main(){ int n,x,y; char c; cin>>n;原创 2021-04-12 16:38:27 · 178 阅读 · 0 评论 -
案例4-1.6 树种统计 (25 分)
案例4-1.6 树种统计 (25 分)简答题,利用map#include<iostream>#include<map>#include<string>#include<cstdio>using namespace std;map<string,int> m;int main(){ int n,i; cin>>n; string a; i=n; cin.get(); while(i--){ getline原创 2021-04-12 16:35:41 · 308 阅读 · 0 评论