PAT_advanced
PAT_advanced题集
fftx_00
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【PAT】1030 Travel Plan——单源最短路径Dijkstra算法(第二标尺)打印路径两种写法
//第一种:普通Dijkstra写法#include <iostream>#include <vector>#define MAXN 510#define MAXDATA 510using namespace std;int N,M,S,D;int G[MAXN][MAXN];int C[MAXN][MAXN];//dist:到源点距离.G[S][i]:是否S邻接点int dist[MAXN];int cost[MAXN];int collec...原创 2021-09-25 16:25:45 · 169 阅读 · 0 评论
-
【PAT】1010 Radix (25 分)
#include <iostream>#include <math.h>#include <algorithm>using namespace std;long long radix_transform(string a,long long radix){//转10进制 long long res=0; reverse(a.begin(),a.end()); for(int i=0;i<a.size();i++){ if(a[i]&g.原创 2021-10-19 20:39:35 · 158 阅读 · 0 评论 -
【PAT】1009 Product of Polynomials (25 分)——多项式乘法
//学习多项式加法的思想//多项式没有必要存储,只需要存储结果 res[指数]=系数//此处因为两多项式不应存在结果中,所以还是需要存一下第一个多项式//第二个多项式在读入时顺便就计算了#include <iostream>#include <vector>#define MAXN 2010//注意因为指数相加,结果的下标最大可以取到2000using namespace std;double coefficients[MAXN];int a[MAXN];d.原创 2021-10-15 15:56:33 · 114 阅读 · 0 评论 -
【PAT】1008 Elevator (20 分)——水题
#include <iostream>using namespace std;int main(){ int N; scanf("%d",&N); int t=0; int cur_floor=0; int requst; for(int i=0;i<N;i++){ scanf("%d",&requst); if(cur_floor<requst){ t+=((requst-cur_floor)*.原创 2021-10-15 13:56:42 · 98 阅读 · 0 评论 -
【PAT】1007 Maximum Subsequence Sum (25 分)——最大连续子列和问题
#include <iostream>#define MAXN 10010using namespace std;int main(){ int K; int a[MAXN]; scanf("%d",&K); int s_start=0,s_end=K-1;//处理全负情况,让最后一个输出末尾元素 int tmp_index=0; int this_sum=0,max_sum=-1;//可能出现0,会影响sum头尾位置,max_sum一定不能一开始就取0.原创 2021-10-14 19:34:46 · 173 阅读 · 1 评论 -
【PAT】1006 Sign In and Sign Out (25 分)——比较大小
//我的解法:非常直接,按顺序比较时,分,秒#include <iostream>#include <string>using namespace std;int main(){ int M; scanf("%d",&M); string name; int a,b,c; string min_name,max_name; int min_a=24,min_b=61,min_c=61; int max_a=-1,max_b=-1,.原创 2021-10-14 16:46:20 · 104 阅读 · 0 评论 -
【PAT】1005 Spell It Right (20 分)——字符串处理
//要么处理字符串,要么就数字分解,都想到了没有有效组合//我的解法1:加法结果还是int,最后逆序分解数字,按序插入#include <iostream>#include <string>using namespace std;string num[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};int main(){ string N; getli.原创 2021-10-14 16:14:47 · 119 阅读 · 0 评论 -
【PAT】1004 Counting Leaves (30 分)——树的遍历(按层)
//DFS方法:#include <iostream>#include <vector>#include <queue>#define MAXN 101using namespace std;//显然只能用数组表示这棵树vector<int> v[MAXN];//v[ID][]:保存所有孩子的IDint N,M;//除了root,每个结点只有一个父结点,因此一定是按顺序访问的,不会重复int book[MAXN];//保存每一层的叶结.原创 2021-10-14 14:21:32 · 217 阅读 · 1 评论 -
【PAT】1003 Emergency——单源最短路径算法(第二标尺)(Dijkstra,Bellman_ford,SPFA)
//第一种方法:Dijkstra算法#include <iostream>#define INFINITE 65535#define MAXN 510using namespace std; int G[MAXN][MAXN];int N,M;int team[MAXN]; int dist[MAXN],num[MAXN],cnt[MAXN];int collected[MAXN];void Dijstra(int c1){ for(int i=0;i&l...原创 2021-09-26 22:20:12 · 167 阅读 · 0 评论 -
【PAT】1002 A+B for Polynomials (25 分)——多项式加法
如果单纯存储两个多项式,那么做运算或者处理就只能遍历,显然不会很方便。一般使用散列能有效解决。#include <iostream>using namespace std;//只要存了结果则原来的多项式没必要存储//指数才1000,且一定是整数,明显用散列//c[指数]=系数,系数是浮点数int main(){ double re[1001]={0};//最多1000个指数 int k;//读第一行 scanf("%d",&k); int e;d原创 2021-10-13 20:58:35 · 143 阅读 · 0 评论 -
【PAT】1001 A+B Format (20 分)——字符串处理
a,b是10的6次方,不会超过int,但是a+b有可能超过int,但是如果直接使用函数to_string()就不用纠结,最后只需要计数添加“,”即可//我的解法:注意to_string()函数C++11才能用,dev用不了//解决函数问题参考:https://www.cnblogs.com/A-Little-Nut/p/10311316.html#include <iostream>#include <string>using namespace s...原创 2021-10-13 19:55:32 · 144 阅读 · 0 评论
分享