PAT 甲级
刷题
coder鹏鹏
这个作者很懒,什么都没留下…
展开
-
大(长)浮点数加法
(C++代码)转载链接:https://blog.csdn.net/qq_36721800/article/details/104649796牛客链接:https://www.nowcoder.com/practice/ddec753f446e4ba4944e35378ba635c8?tpId=61&tqId=29551&tPage=3&ru=/kaoyan/retest/1002&qru=/ta/pku-kaoyan/question-rankingjava代码pub原创 2021-01-29 22:26:30 · 625 阅读 · 1 评论 -
PAT甲级(1091)
题意理解(个人看法)1、每层MN个像素点共有L层,所以对一个MN*L的三维物体进行扫描,采用BFS进行搜索。2、X、Y、Z数组中的1和-1代表前后左右上下方向,1表示前进一格想正方向搜索,-1表示后退一格向后方搜索。3、先向X的正向搜索如果为1,cnt++,同时判断是否越界。...原创 2020-06-26 22:19:10 · 236 阅读 · 0 评论 -
PAT甲级(1074)
只做到了24分最后一个数据点没通过,但个人感觉比柳神的更容易理解。1、首先将原始链加入v;2、先算出分组g = n/k,对g个分组进行逆置加入ans,将剩下的n%k原顺序输出加入ans;#include <bits/stdc++.h>using namespace std;struct node{ int id,val,next;}a[100010];vector<node> v,ans;int main(){ int start,n,k;原创 2020-06-24 22:31:40 · 164 阅读 · 0 评论 -
C++指针创建完全二叉搜索树(CBT)
参考文章数组格式,指针形式可以随意指定遍历形式#include <bits/stdc++.h>using namespace std;int arr[1010]={0};struct node{ int val; struct node *lchild,*rchild;};int getLeftLength(int n){ int height = floor(log(n+1)/log(2)); int x = n+1-pow(2,heig原创 2020-06-23 15:51:01 · 194 阅读 · 0 评论 -
PAT甲级(1057):Stack
树状数组参考链接很详细:树状数组详解#include <iostream>#include <stack>#define lowbit(i) ((i) & (-i))const int maxn = 100010;using namespace std;int c[maxn];stack<int> s;void update(int x, int v) { for(int i = x; i < maxn; i += lowbit(i)原创 2020-06-19 22:47:12 · 118 阅读 · 0 评论 -
PAT甲级1135
红黑树的特点1、根节点是黑色。2、如果一个节点是红色那么他的两个子节点都是红色。3、任意从根节点到叶子结点的路径上,所有的路径经过的黑色节点数相同。4、红黑树是二叉搜索树。算法1、根节点是否为黑色。2、红色节点的两个子节点是不是都是黑色。3、所有路径经过的黑色节点数是不是相同的。#include <bits/stdc++.h>using namespace std;vector<int> arr;struct node{ int key;原创 2020-05-27 15:42:42 · 244 阅读 · 1 评论 -
PAT甲级1072
#include <iostream>#include <algorithm>#include <string>using namespace std;const int inf = 999999999;int n, m, k, ds, station;int e[1020][1020], dis[1020];bool visit[1020];int main() { fill(e[0], e[0] + 1020 * 1020, inf);原创 2020-05-26 16:00:10 · 135 阅读 · 0 评论 -
PAT甲级1013
假设将index点去掉之后,剩下的点构成两个连通分量,则只需要一条路就行,若剩下的点构成3个连通分量则只需要2个就行,依次类推,对每个城市进行遍历,需要的公路数量就是去掉这个城市的连通分量的个数cnt-1.#include <bits/stdc++.h>using namespace std;int e[1010][1010];bool visit[1010];int n,m,k;void dfs(int u){ visit[u] = true; for(in原创 2020-05-25 16:13:45 · 130 阅读 · 0 评论 -
PAT甲级1034
#include <bits/stdc++.h>using namespace std;map<string,int> stringToInt;map<int,string> intToString;map<string,int> ans;int idNumber=1,k;int G[2010][2010],weight[2010];bool visit[2010];int stoifunc(string s){ if(stri原创 2020-05-25 15:15:24 · 121 阅读 · 0 评论 -
PAT甲级1111
使用两次DIjikstra+dfs算法#include <bits/stdc++.h>using namespace std;const int inf=99999;int e[510][510],w[510][510],dis[510],weight[510],nodeNum[510];bool visit[510];int n,m,c1,c2;vector<int> pre[510],pre2[510],dispath,timepath;void dfsdis原创 2020-05-23 22:53:54 · 128 阅读 · 0 评论 -
PAT甲级1111
使用两次Dijikstra+dfs#include <bits/stdc++.h>using namespace std;const int inf=99999;int e[510][510],w[510][510],dis[510],weight[510],nodeNum[510];bool visit[510];int n,m,c1,c2;vector<int> pre[510],pre2[510],dispath,timepath;void dfsdispa原创 2020-05-23 22:52:48 · 90 阅读 · 0 评论 -
PAT甲级1087
#include <bits/stdc++.h>using namespace std;const int inf = 99999;int e[210][210],weight[210],dis[210],num[210],w[210];bool visit[210];int n ,m,c1,c2,sum=0;vector<int> pre[210],path;struct node{ int id; string name; int wei原创 2020-05-23 16:25:36 · 142 阅读 · 0 评论 -
PAT甲级1030
第一个自己完全做对的最短路径题。。。#include <bits/stdc++.h>using namespace std;const int inf=999999;int Cost[510][510],e[510][510],dis[510],cost[510];bool visit[510];int n,m,c1,c2;vector<int> pre[510],tmp;void dfs(int v){ tmp.push_back(v); fo原创 2020-05-23 15:14:49 · 176 阅读 · 0 评论 -
PAT甲级1018
1、先求出到各点的最短距离放在dis中,并用pre存储到v节点最短距离的上一个节点。2、再对从sp开始的pre[v]做dfs找出最小back和最小need;#include <bits/stdc++.h>using namespace std;const int inf = 99999999;int cmax, n, sp, m;int minNeed = inf, minBack = inf;int e[510][510], dis[510], weight[510];boo原创 2020-05-22 22:46:16 · 154 阅读 · 0 评论 -
二叉树的创建与遍历(C语言)
#include<stdio.h>#include<stdlib.h>typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void PreOrderTraverse(BiTree T)//二叉树的先序遍历{ if(T==NUL...原创 2020-04-18 09:49:37 · 491 阅读 · 0 评论 -
PAT甲级1094
自己的代码23/25#include <bits/stdc++.h>using namespace std;struct node{ int id; vector<int> child;};vector<node> v;int cnt[20] = {0};void dfs(int index,int level){ if(v[index].child.size() == 0) return; cnt[level]+=原创 2020-05-18 15:45:11 · 152 阅读 · 0 评论 -
PAT甲级1017:Queuing At Bank
#include <bits/stdc++.h>using namespace std;int MAX=10005;struct Person{ int come,time;};bool cmp(Person a,Person b){ return a.come<b.come;}int main(){ int m,n,cnt=0,total=0; cin >> m >> n; struct Person p原创 2020-05-16 16:31:03 · 102 阅读 · 0 评论 -
PAT甲级1146
#include <iostream>#include <vector>using namespace std;int main() { int n, m, a, b, k, flag = 0, in[1010]; vector<int> v[1010]; scanf("%d %d", &n, &m); for (int i = 0; i < m; i++) { scanf("%d %d", &a原创 2020-05-08 23:02:57 · 129 阅读 · 0 评论 -
PAT甲级1089
参考文章#include<iostream>#include<algorithm>#include<string.h>using namespace std; bool is(int num1[], int num2[], int n){ for (int i = 0; i < n; i++) if (num1[i] != num2[i])...原创 2020-05-07 21:53:45 · 138 阅读 · 0 评论 -
PAT甲级:1085 perfect sequence
注意upper_bound 和lower_bound函数的用法自己写的一个测试数据错误#include <bits/stdc++.h>using namespace std;int main(){ vector<long> v; long m,p; cin >> m >> p; for(int i=0;i&...原创 2020-05-06 21:38:23 · 102 阅读 · 0 评论 -
PAT甲级(1066):Root of AVL Tree
#include <bits/stdc++.h>using namespace std;struct node { int val; struct node *left, *right;};node *rr_rotate(node *root) { node *t = root -> right; root -> right = t ...原创 2020-04-19 22:35:07 · 84 阅读 · 0 评论 -
PAT甲级(1061):Scientific Notation
(1)、find()函数 string name="dddfsfs"; int index = name.find('d'); //返回d第一次出现时的下标(2)、insert函数 a = str.insert(4,"sky"); //在下标为4的位置,插入字符串sky b = str.insert(4,5,'x'); //在下标为4的位置,插入字符串5个字...原创 2020-04-15 09:58:04 · 86 阅读 · 0 评论 -
PAT甲级(21):Shopping In Mars
双指针参考链接:https://blog.csdn.net/richenyunqi/article/details/793237961、首先将i和j都指向0下标,sum为i到j的和。2、如果sum小于x的话j就向右移动。3、如果sum=x的话输出。4、如果sum>x的话,就将最小和maxNum设置为sum,并且将i+1和j加入vector,如果sum<maxNum的话就将v清...原创 2020-04-13 10:39:11 · 74 阅读 · 0 评论 -
PAT(20):Foreards On Weibo
#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn = 1200;int a[maxn][maxn],vis[maxn],len,n;queue <int> q;int bf...原创 2020-04-10 11:04:20 · 100 阅读 · 0 评论 -
PAT甲级(19):The World's Richest
第一次一个测试用例超出内存限制#include <iostream>#include <vector>#include <algorithm>using namespace std;struct people{ string name; int age; int money;};struct cases{ int...原创 2020-04-07 11:06:08 · 77 阅读 · 0 评论 -
PAT甲级(18):Be Unique
#include <iostream>#include <map>using namespace std;int main(){ int n; bool flag = false; map<int,int> m; cin >> n; int a[n]; for(int i=0;i<n;i+...原创 2020-04-07 09:13:04 · 83 阅读 · 0 评论 -
PAT甲级(17):Find Coins
第一次尝试:两个测试用例运行超时#include <iostream>#include <algorithm>#include <cstdio>using namespace std;int N,M,v1=1000,v2=1000;int main(){ scanf("%d %d",&N,&M); int a[N];...原创 2020-04-06 10:10:54 · 88 阅读 · 0 评论 -
PAT(16):Median
自己写的部分报错(想的太简单)#include <iostream>#include <algorithm>#include <vector>using namespace std;int main(){ vector<int> v; int length, a; for(int j=0;j<2;j++) ...原创 2020-04-05 10:52:02 · 87 阅读 · 0 评论 -
PAT(15):1009 Product of Polynomials
特别注意t的用处#include<iomanip>#include<iostream>#include <algorithm>using namespace std;int main(){ int n, m; float numa[1001] = {0.0};//存放A中的各项信息,下标是指数,数组的值是对应的系数 float numb[...原创 2020-04-04 22:46:16 · 59 阅读 · 0 评论 -
PAT甲级(14):A+B for Polynomials
#include<iostream>#include <iomanip>using namespace std;const int maxn = 1111;double p[maxn] = {};int main() { int k, n, count = 0; double a; cin >> k; for(int i...原创 2020-04-04 10:12:39 · 66 阅读 · 0 评论 -
PAT甲级(13):Read Number In Chinese
大佬的代码1、先将输入的字符串分为三段。2、从高位到低位依次处理每个数字。3、printCnt=0表示处理的是最高位,前面不用加空格,后面每位前面都要加空格。4、j=0表示处理每四位中的最低位,直接输出个位即可。5、zero为true时表示出现0,之后进行输出,如果出现连续的0则不满足!zero条件则继续循环。#include <iostream>#include <...原创 2020-04-03 22:36:27 · 73 阅读 · 0 评论 -
PAT甲级(12):Magic Coupon
自己的思路(总会部分错误)1、将两行数按正数从大到小排列,负数从小到大排列,这样每次就可以相同符号绝对值最大的数相乘。2、如果遍历完一次就将两个数的flag置位false表示使用过。#include <iostream>#include <algorithm>using namespace std;struct cp{ int value; ...原创 2020-04-01 10:43:45 · 83 阅读 · 0 评论 -
PAT甲级(11):Emergency
#include<iostream>#include<algorithm>#define inf 65535using namespace std;int n,m,s,t;bool visit[500]={false};int Cost[500][500],cost[500],choice[500],amount[500],maxget[500];//cost...原创 2020-03-31 10:28:29 · 85 阅读 · 0 评论 -
PAT甲级(10):Reversible Prime
代码借鉴别人的首先判断这个数是不是质数,然后再在后面的进制下进行翻转,在判断翻转过来的数是不是质数,1既不是质数也不是合数。链接:https://www.nowcoder.com/questionTerminal/de646777adbd4513926ae88d2bf31a89来源:牛客网#include <iostream>using namespace std;boo...原创 2020-03-30 22:39:10 · 89 阅读 · 0 评论 -
PAT甲级(9):Max Subsequence Sum
#include <iostream>using namespace std;const int maxn=10001;int a[maxn],dp[maxn];int main(){ int n,flag=0,m,start,endd,s,e; cin>>n; for(int i=0;i<n;i++) { c...原创 2020-03-30 10:01:59 · 94 阅读 · 0 评论 -
PAT甲级(8):List Sorting
自己写的(出现段错误,但是感觉跟别人的产不多。。不知道咋错)#include <iostream>#include <cstring>#include <string>#include <algorithm>using namespace std;struct Student{ string id; string na...原创 2020-03-26 09:45:57 · 50 阅读 · 0 评论 -
PAT甲级(7):Median
#include <iostream>#include <algorithm>using namespace std;int main(){ int m,n,median; cin >> m; int s1[m]; for(int i=0;i<m;i++) cin >> s1[i]; cin ...原创 2020-03-25 23:32:57 · 82 阅读 · 0 评论 -
PAT甲级(6):Password
#include <iostream>#include <stdio.h>#include <cstring>#include <string>using namespace std;struct account{ string id; string pass; bool flag = false;};int...原创 2020-03-25 14:37:03 · 66 阅读 · 0 评论 -
PAT甲级(5):TravelPlan
参考文章链接代码(邻接矩阵迪杰斯特拉算法)#include<bits/stdc++.h>using namespace std;int Cost[505][505],Dis[505][505];//存储每条边的权重、距离int dis[505],cost[505],pathLast[505];//存储起点到该点的最短距离、起点到该点的最小权重、起点到该点的父节点bool v...原创 2020-03-21 11:13:23 · 81 阅读 · 0 评论 -
迪杰斯特拉算法最短路径
参考文章参考文章链接代码public class Dijkstra { public static final int M = 10000; // 代表正无穷 public static void main(String[] args) { // 二维数组每一行分别是 A、B、C、D、E 各点到其余点的距离, // A -> ...原创 2020-03-21 10:46:22 · 173 阅读 · 0 评论