PAT甲级
PDYJ
这个作者很懒,什么都没留下…
展开
-
|stoi+Dijkstra+结构体排序|L3-005. 垃圾箱分布 - Dijkastra模板题 -天梯赛练习
referreferlink原创 2020-11-11 22:11:34 · 99 阅读 · 0 评论 -
|Dijkstra+dfs打印最短路径、多条最短路径、最小花费边权|1030 Travel Plan (30分)
link//给出城市数(顶点数)、道路数(边数 无向边)、起点、终点、距离(边权)、花费(边权)//求:起点到终点的最短路径,最短距离,以及花费//如果有多条最短路径,则选择花费最小的那条/*4 5 0 30 1 1 201 3 2 300 3 4 100 2 2 202 3 1 200 2 3 3 40*///1.Dijkstra//2.Dijkstra+dfs//今天,我们用第1种方法//边权的存储#include <iostream>usin原创 2020-11-11 08:47:34 · 343 阅读 · 0 评论 -
|Dijkstra 多条最短路径|1003 Emergency (25分)
link/*给出N个城市,M条无向边每个城市中都有一定数目的救援小组,所有边权已知。现在给出起点和终点,求从起点到终点的最短路径条数以及最短路径上的救援小组数目之和。如果有多条最短路径,则输出数目之和最大的----------点权和*//*5 6 0 21 2 1 5 30 1 10 2 20 3 11 2 12 4 13 4 1*/#include <iostream>using namespace std;const int N = 1000;con原创 2020-11-09 10:32:06 · 180 阅读 · 0 评论 -
1154 Vertex Coloring (25 分)ing。。。。。
refer原创 2020-11-07 20:49:46 · 83 阅读 · 0 评论 -
|扫一圈相邻的点,不dfs,hash散列vis,vector初始化赋值|1134 Vertex Cover (25分)
link#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <map>#include <set>#include <string>using namespace std;int main(){ int n, m, k, nv, a, b, num; scanf("%d%d",原创 2020-11-06 21:26:20 · 87 阅读 · 0 评论 -
|邻接表bfs遍历图|1076 Forwards on Weibo (30分)
//在微博,当用户发布一条信息时//他的关注者可以看到这条信息并且选择是否转发它//且转发的信息可以被被转发者的关注者再次转发//但是同一用户最多只能转发该信息一次(信息的最初发布者不能转发该信息)//现在给出N个用户的关注情况(即他们各自关注了哪些用户)//以及一个转发层数的上限L-----------高度//并给出最初发布消息的用户编号,球在转发层数上限内最多会被多少用户转发//咋觉得是求节点数目呢?//7 3 n用户个数 l转发层数上限//接下来n行(顶点编号1~n)//M.原创 2020-10-31 20:54:43 · 91 阅读 · 0 评论 -
|不懂|1021 Deepest Root (25 分)--PAT甲级
题目大意:找到使一棵树深度最大的所有根节点,若不为树,则输出连通分量个数。先一遍dfs得到深度最大的所有点的集合,再从集合中随便找一个节点,从该点出发再做一遍dfs,得到另一个深度最大的所有点的集合,两个集合的并集即为结果。也可以直接暴力法:对每个节点做一遍dfs,将得到的深度最大的节点记录下来。暴力:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>.原创 2020-10-31 11:12:10 · 94 阅读 · 0 评论 -
!马住_还没进行编号转换!|并查集_max父节点、邻接矩阵dfs遍历图连通块|1034 Head of a Gang (30)
//A "Gang" is a cluster of more than 2 persons //who are related to each other with total relation weight being greater than a given threshold K// The weight of a relation // is defined to be the total time length of all the phone calls // made betwee原创 2020-10-29 13:04:11 · 109 阅读 · 0 评论 -
dfs遍历图
dfs是以深度为第一关键词每次都沿着路径到不能再前进时才退回到最近的岔道口沿着一条路径直到无法继续前进才退回到路径上里当前顶点最近的&还存在未访问的岔道口并前往访问那些未访问的分支顶点直到遍历完这个图dfs的具体实现2个概念:1)连通分量:2个顶点联通:2个顶点之间可以互相到达(无向图中)====》联通图:图G(V,E)的任意2个顶点都联通(无向图)连通图的连通分量一个,但是非联通图的联通分量有多个连通分量:极大的联通子图link求图的连通分量的目的,原创 2020-10-29 08:48:53 · 1890 阅读 · 0 评论 -
!并查集未完待续!|图的遍历/并查集--连通块数dfs|1013 Battle Over Cities (25分)
link//图的遍历//给定1个无向图并规定: //当删除图中某个顶点的时候,与之链接的边一起删除//接下来给出k个查询 //每个查询给出1个欲删除的顶点编号,求删除该顶点(和与其链接的边)后需要增加多少条便,才能让图联通//3 2 3--n,m,k------城市数,道路数,需要检查(删除)的城市数---------------这咋又让我想到了红色警报//随后m行//1 2-----某条道路2端的2个城市编号//1 3-----某条道路2端的2个城市编号//1 2 3--------原创 2020-10-28 18:46:34 · 142 阅读 · 0 评论 -
|并查集 与谁合并?|1107 Social Clusters (30分)
1107 Social Clusters (30分)link比如7很有可能 7是爱好6 8 1 的领头羊(第一个喜欢的)(后面爱好6 8 1的人会和7在一个组)但是 7 也是 爱好5 的小喽喽(所以7和爱好5的领头羊2 在一个组)(原本因为爱好6 8 1跟随7的小喽喽 也会和2在一个组)int main() { int n, k, h; cin >> n; init(n);//人的编号从1开始//////////////////////1.初始化 for (int i =原创 2020-10-26 16:22:28 · 89 阅读 · 0 评论 -
|AVL建树,层序遍历树,CBT判断|PAT1123 AVL树的调整与判断完全二叉树
pat 1022(AVL树+完全二叉树)1066 Root of AVL Tree (25分)PAT1123 AVL树的调整与判断完全二叉树link1110 Complete Binary Tree (25分)1064 Complete Binary Search Tree (30分)考察点,二叉平衡树、层序遍历和完全二叉树,888 70 61 96 120 90 65 68#include <stdio.h>#include <string.h>#includ原创 2020-10-25 17:20:30 · 124 阅读 · 0 评论 -
|AVL模板|A 1066 Root of AVL Tree
link#include<iostream>#include<stdio.h>#include<stdlib.h>#include<algorithm>using namespace std;struct node{ int v;//结点数据 int height;//结点高度 node* lchild; node* rchild;} *root;node* newnode(int v)//创建一个新结点,新结点的高度置为1原创 2020-10-25 15:26:58 · 102 阅读 · 0 评论 -
|bst中序建树_填值_层序输出_树静态写法_左右孩子|1099 Build A Binary Search Tree (30分)
//二叉树有n个节点,编号0~N-1//给出每个左右孩子节点的编号(不存在用-1表示)//接着给出一个N个整数的序列,需要把这N个整数填入二叉树的节点中//使得二叉树成为bst,输出这棵bst的层序遍历序列#include <iostream>#include <cstdio>#include <algorithm>#include <queue>using namespace std;struct node{//二叉树的静态写法 .原创 2020-10-16 16:53:46 · 136 阅读 · 0 评论 -
|CBT|1064 Complete Binary Search Tree (30分)???用数组存储_数组下标(1)就是节点编号_数组元素的值就是节点点权
https://blog.csdn.net/sinat_41144773/article/details/89530403转载 2020-10-16 09:37:12 · 131 阅读 · 0 评论 -
1043 Is It a Binary Search Tree (25分)
void insert(node* &root,int data){}----------insert(root,tmp);void postMirrorOrder(node* root,vector &v){}----preMirrorOrder(root,preM);if(origin==pre){}-----------vector可以比较`// 7// 8 6 5 7 10 8 11#include <iostream>#include <cs...原创 2020-10-15 14:58:39 · 94 阅读 · 0 评论 -
|给出路径长度(点权和)求|1053 Path of Equal Weight (30分)*********
1053 Path of Equal Weight (30分)//给定一棵树和每个节点的权值//求所有从根节点到叶子节点的路径//使得每条路径上的节点的权值之和等于给定的常数S//如果有多条这样的路径//按照路径非递增的顺序输出//其中路径的大小是指,如果有两条路径分别为a1->a2->...ai->an和b1->b2->b3->...bi->bm//如果ak>bk,则称第一条路径大------>递减,编号大的先输出#include &原创 2020-10-14 16:51:53 · 107 阅读 · 0 评论 -
|树的每一层叶子节点的个数|1004 Counting Leaves (30分)
求每一层的叶子节点数注意点:1.到底有几层?所以用了maxDepth来保存最深的层数便于后续来输出每层的层数2.如何保存每层的层数HashTable[]散列表来存储,下标是层数,元素是叶子个数#include <iostream>#include <cstdio>#include <vector>using namespace std;int n,m,maxDepth=0;int hashTable[110]={0};vector<int&原创 2020-10-14 15:41:50 · 347 阅读 · 0 评论 -
|最低层次叶子节点价格,个数|1106 Lowest Price in Supply Chain (25分)1090 Highest Price in Supply Chain (25分)
void dfs(int index,int depth){ if(child[index].size()==0){//没有孩子,到达根节点了 if(depth>maxDepth){ maxDepth=depth; num=1; }else if(depth==maxDepth){ num++; } return; }void dfs(int in原创 2020-10-14 14:50:22 · 82 阅读 · 0 评论 -
|树某层最多节点数,层号|1094 The Largest Generation (25分)1090 Highest Price in Supply Chain (25分)
树的静态写法,也就是我们一直碰到的的vector<int>Node[max]虽然之前有碰到过int lchild,rchild;但是鉴于前者练习次数过多,用来比较顺手,并且也可以适用于除了二叉树的树所以以后如果题目就是编号 01234…给出它们的孩子,就用前者了vector<int>Node[max]如果是有点权 的话,那就用结构体吧,把vector<int>Node[max]改写为vector<int>child,然后在定义结构体数组Node[max原创 2020-10-14 11:54:31 · 108 阅读 · 0 评论 -
|邻接表+dfs(index,depth)|1090 Highest Price in Supply Chain|1079| Total Sales of Supply Chain||功夫达人
这道题莫名的让我想到了“功夫达人”那道题,也是一样的用邻接表+dfs(index,depth),但是不知道为什么这道题不用标记visited[]数组通过深度优先搜索计算出最长的供应链,再定义一个计数器计算出这个供应链的个数//功夫达人的代码//方便比较#include <iostream>#include <cstdio>#include <vector>//#include <algorithm>#include <cstring原创 2020-10-13 20:24:13 · 87 阅读 · 0 评论 -
|反转树-后序_交换-普通遍历|1102 Invert a Binary Tree (25分)
//因为题目直接给出的节点编号的关系,因此用二叉树的静态写法//如果输入的是数字,则直接把lchild或是rchild//如果是“-”,则认为该侧没有孩子节点,记作-1//同时还需要找到这棵树的根节点//而这只需要找到一个节点,它不是任何节点的孩子即可(开1个bool型数组notRoot,在输入时进行记录)// 8// 1 -//0的左孩子是1,没有右孩子// - -// 0 -// 2 7// - -// - -// 5 -// 4 6#include <iostrea原创 2020-10-12 21:18:24 · 83 阅读 · 0 评论 -
C++的swap函数
https://www.jb51.net/article/181427.htm举个例子,要将两个int数值交换,是不是想到下面的代码:void swap(int&a , int &b){ int t = a; a=b; b=t;}struct node{ int lchild,rchild;}Node[110];swap(Node[root].lchild,Node[root].rchild);//交换左右节点...原创 2020-10-12 21:06:08 · 254 阅读 · 0 评论 -
二叉树反转---左右根--后序--交换swap
二叉树反转说的就是将二叉树的左子树右子树互换,如果他们都有孩子的话,那么也递归的左右互换。所以,二叉树反转的步骤简述为: 1.反转根节点的左子树(递归调用反转函数) 2.反转根节点的右子树(递归调用反转函数) 3.交换根节点的左节点和右节点。二叉树反转的实例如图所示:初始:反转之后:代码如下:public TreeNode invertTree(TreeNode root) { if(root==null){ return n..原创 2020-10-12 21:03:28 · 765 阅读 · 0 评论 -
|栈模拟pre、in,求post|1086 Tree Traversals Again (25分)
`//用栈来模拟一棵二叉树的先序和中序遍历过程,求这棵二叉树的后序遍历序列// 6// Push 1// Push 2// Push 3// Pop// Pop// Push 4// Pop// Pop// Push 5// Push 6// Pop// Pop//push的次序为1、2、3、4、5、6 //因此先序遍历的序列为123456//pop的次序为3、2、4、1、6、5 //因此中序遍历的序列是342651//任何2个序列组合,都一定要有中序/.原创 2020-10-12 20:06:51 · 83 阅读 · 0 评论 -
1034 Head of a Gang (30分)图基本算法 图的表示方法 邻接矩阵 邻接表
https://www.cnblogs.com/dzkang2011/p/graph_1.htmlhttps://blog.csdn.net/lu_LLLR/article/details/82453722?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-tas原创 2020-10-07 12:21:02 · 119 阅读 · 0 评论 -
|bfsdfs中序后序层次|1020 Tree Traversals (25分)
首先理解概念:前序遍历:访问根结点的操作发生在遍历其左右子树之前。中序遍历:访问根结点的操作发生在遍历其左右子树之中(间)。后序遍历:访问根结点的操作发生在遍历其左右子树之后。eg:后序遍历为DBCEFGHA,中序遍历为EDCBAHFG,求前序遍历(网上例子)解:首先 看后序遍历DBCEFGHA,A为总根节点然后 寻找中序遍历EDCBAHFG中A位置,则EDCB在A的左枝,HFG在A的右枝;重复前两步,从后序遍历最后一位找,在中序遍历寻找对应点,得出左右分枝… 最后得到AECDBHGF,..原创 2020-09-26 15:55:11 · 73 阅读 · 0 评论 -
|并查集|1107 Social Clusters (30分)
//A social cluster is a set of people who have some of their hobbies in common. You are supposed to find all the clusters.//8 the first line contains a positive integer N (≤1000), the total number of people in a social network.// Hence the people are nu.原创 2020-09-24 16:00:55 · 84 阅读 · 0 评论 -
PAT_甲级_C++|静态链表|1025 反转链表 (25)
/*import java.io.IOException;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.List;public class Main{ static class Node{ public int address; public int value; pub原创 2020-09-10 10:53:55 · 66 阅读 · 0 评论 -
PAT_甲级_C++|静态链表|1052 Linked List Sorting (25分)
/*For each case, the first line contains a positive N (<10^5) and an address of the head node,5 00001//////////////////////////////////Then N lines follow, Address Key Next11111 100 -100001 0 2222233333 100000 1111112345 -1 3333322222 1000 123原创 2020-09-09 20:31:07 · 86 阅读 · 0 评论 -
PAT_甲级_C++|静态链表|1032 Sharing (25分)
//the first line contains two addresses of nodes and a positive N (≤10^5)//11111 22222 9//Then N lines follow, each describes a node in the format://Address Data Next// 67890 i 00002// 00010 a 12345// 00003 g -1// 12345 D 67890// 00002 n 00003//原创 2020-09-09 19:26:05 · 110 阅读 · 0 评论