![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PTA
anmss
Sauerkraut fish
展开
-
PTA-1107 dfs/并查集
#include<iostream>#include<vector>using namespace std;vector<int> v[1000], ans[1001];int visited[1001] = { 0 };int n, cursor = 0;bool same(int m, int n) { for (int each1 : v[m]) { for (int each2 : v[n]) if (e原创 2021-06-15 20:49:29 · 125 阅读 · 0 评论 -
1034.Head of a Gang dfs/并查集
Head of a Gangdfs求连通子图:1.通过dfs来遍历所有成员,将所有有通话记录的成员放在同一个团伙中(求连通子图),注意用结构体来储存团伙信息(团伙中用vector容器来储存内含成员)。2.用<string,int>的unordered_map来形成名字对序号的映射,用<int,string>的unordered_map来方便查询。#include<iostream>#include<unordered_map>#include<原创 2021-06-13 23:45:08 · 121 阅读 · 0 评论 -
1037.Magic Coupon 很简单的贪心
Magic Coupon解答:排序过后正正相乘,负负相乘,累加。#include<iostream>#include<algorithm>using namespace std;int main(){ int n1,n2,i,j,sum=0; int a[100000],b[100000]; cin>>n1; for(i=0;i<n1;i++) cin>>a[i]; cin>>n2;原创 2021-06-01 23:10:10 · 102 阅读 · 0 评论 -
1033.To Fill or Not to Fill
To Fill or Not to Fill分析:贪心算法。0.假设增加一个目的地处的加油站,距离为目的地的距离,价格为0,考虑从0距离开始能否到达最后一个加油站的问题1.因为先开始没有油,所以如果所有的加油站距离都没有等于0的,那么说明车哪也去不了,直接输出并return2.将加油站按照距离dis从小到大排序3.先去第一个加油站,设置变量nowdis表示当前所在的距离,maxdis是能够到达的最大距离,nowprice是当前的站点的价格,totalPrice是总的价格。贪心思想:0.寻找比自原创 2021-06-01 22:14:14 · 185 阅读 · 0 评论 -
1032.Sharing 链表
Sharing思路:采用逆向思维,先将两个序列放到两个vector容器中,再从尾到头遍历,判断地址是否相等(因为数据相同的结点地址相等,所以本题可以只判断地址是否相等,不用涉及结点data),遍历到不相等的结点序号时停止,输出下一个即可。(本题不建议用stack栈,因为前面的结点弹出去了不便于找不相等处的下一个结点)解答:#include<iostream>#include<vector>using namespace std;struct node{ char原创 2021-06-01 19:07:34 · 68 阅读 · 0 评论 -
1031.Hello World for U(水)
Hello World for U这是一道数学问题:n1=n3=max{ k | k<=n2 for n3=<n2<=N}且n1+n2+n3-2=N;时求n1,n3的值及n2的值,因为是三个边且要让三条边尽量相等,所以对n+2/3即可得到n1,n3解答:#include<iostream>using namespace std;int main() { int n1, n2, n3, i, j, k; string s; cin >&g原创 2021-06-01 18:34:40 · 51 阅读 · 0 评论 -
1030.Travel Plan
#include#includeusing namespace std;int N, M, S, D;//城市数 路数 起点 终点vector v[501];//邻接表来储存城市之间的信息int dis[501][501], cost[501][501];//二维数组来储存距离,费用信息int mindis_to[501];vector path, ans_path;int Mindis = 999999, Mincost = 999999;void dfs(int cur, int di原创 2021-05-31 23:35:53 · 94 阅读 · 0 评论 -
1029.Median 水排序
Median注意偶数位数的序列取的是中间两个的第一个解答:#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){ vector<int> v; int M,tmp; cin>>M; for(int i=0;i<M;i++){ cin>>tmp;原创 2021-05-31 20:58:15 · 105 阅读 · 0 评论 -
1028.List Sorting
List Sorting注意这道题如果s数组设置为100001->运行超时,设置为99999->段错误,即最后一个测试点为100000个学生解答:#include<iostream>#include<algorithm>#include<cstdio>using namespace std;struct student{ string Name; int Score,Id;}s[100000];bool comp1(stude原创 2021-05-30 17:12:29 · 59 阅读 · 0 评论 -
1027.Colors in Mars(水)
Colors in Mars不要忘了10-12用的是ABC…解答:#include<iostream>#include<string>using namespace std;int main(){ int red,green,blue; char book[14]="0123456789ABC"; cin>>red>>green>>blue; string ans; ans+=book[red/原创 2021-05-30 16:40:08 · 47 阅读 · 0 评论 -
1026.Table Tennis复杂的队列问题
#include<iostream>#include<queue>#include<algorithm>#include<vector>using namespace std;struct player{ int come_time,leave_time,play_time; int isvip=0;//0非vip,1是vip int serve_time=0;//初始化为0,便于区别是否已经得到服务};struct ta原创 2021-05-30 16:11:45 · 110 阅读 · 0 评论 -
1025.PAT Ranking
PAT Ranking解答:思路:用结构体来存放数据,用tmp容器来存放临时学生数据,用sort算法来对成绩进行排序,再给这些临时学生数据赋排名,昨晚排名操作后将临时数据全部插入到最终学生结构体数组中即可。注意同等成绩排名相同的排名方法: for(int j=1;j<K;j++){ if(tmp[j].Score==tmp[j-1].Score) tmp[j].location_rank=tmp[j-1].location_rank; e原创 2021-05-29 23:44:42 · 99 阅读 · 0 评论 -
1024.Palindromic Number
#include<iostream>using namespace std;bool judge(int* digit, int len) { for (int i = 0; i < len / 2; i++) { if (digit[i] != digit[len - i - 1]) return false; } return true;}int main() { string s; int K, digit1[20]原创 2021-05-29 18:45:30 · 63 阅读 · 0 评论 -
PTA-1023-数字字符串转化
Have Fun with Numbers解答:用哈希表来表示一个数字映射这个数字的个数,当然也也可以用一个数组来存放0-9的个数,但是用哈希表时只用判断哈希表是否为空,如果用数组就要遍历这个数组是否都为0#include<iostream>#include<unordered_map>using namespace std;unordered_map<int,int>Map;int main(){ string Strnum; int d原创 2021-05-28 23:19:33 · 236 阅读 · 0 评论 -
PTA(1002)
PTA(1002)解答:本题对数据的输入并没有按照题目所给格式按照空格隔开。#include <iostream>#include <stdio.h>#include <set>using namespace std;int main(int argc, char const *argv[]){ float coef[1001] = {0}; // 记录每个不同指数前面系数,比如a[4]=2表示2x^4 int num; scanf("%d",原创 2021-05-10 19:57:05 · 84 阅读 · 0 评论