最短路径

1003. Emergency (25)-PAT甲级真题(Dijkstra算法)

1018. Public Bike Management (30)-PAT甲级真题(Dijkstra + DFS)

1030. Travel Plan (30)-PAT甲级真题(Dijkstra + DFS,输出路径,边权)

1087. All Roads Lead to Rome (30)-PAT甲级真题-Dijkstra + DFS

1111. Online Map (30)-PAT甲级真题(Dijkstra + DFS)

最短路径扩展问题

  • 要求数最短路径有多少条

    • count[s] = 1;
    • 如果找到更短路:count[W]=count[V];
    • 如果找到等长路:count[W]+=count[V];
  • 要求边数最少的最短路

    • count[s] = 0;
    • 如果找到更短路:count[W]=count[V]+1;
    • 如果找到等长路:count[W]=count[V]+1;
  • 存在点权

    比如救火问题,多条最短路径,选择点权最大的那条

    for(int i = 0; i < n; i++) {
    int u = -1, minn = inf;
    for(int j = 0; j < n; j++) {
    if(visit[j] == false && dis[j] < minn) {
    u = j;
    minn = dis[j];
    }
    }
    if(u == -1) break;
    visit[u] = true;
    for(int v = 0; v < n; v++) {
    if(visit[v] == false && e[u][v] != inf) {
    if(dis[u] + e[u][v] < dis[v]) {
    dis[v] = dis[u] + e[u][v];
    num[v] = num[u];
    w[v] = w[u] + weight[v];
    } else if(dis[u] + e[u][v] == dis[v]) {
    num[v] = num[v] + num[u];
    if(w[u] + weight[v] > w[v])
    w[v] = w[u] + weight[v];
    }
    }
    }
    }
  • 边权不唯一

    比如旅游规划问题,存在多条最短路径时,选择花费最少的

    void Dijkstra( Vertex s ) {
    while (1) {
    V = 未收录顶点中dist最小者;
    if ( 这样的V不存在)
    break;
    collected[V] = true;
    for ( V 的每个邻接点W )
    if ( collected[W] == false )
    if ( dist[V]+E<V,W> < dist[W] ) {
    dist[W] = dist[V] + E<V,W> ;
    path[W] = V;
    cost[W] = cost[V] + C<V,W> ;
    } else if ( (dist[V]+E<V,W> == dist[W])
    && (cost[V]+C<V,W> < cost[W]) ) {
    cost[W] = cost[V] + C<V,W> ;
    path[W] = V;
    }
    }
    }

树的遍历

1004. Counting Leaves (30)-PAT甲级真题(bfs,dfs,树的遍历,层序遍历)

1020. Tree Traversals (25)-PAT甲级真题

1053. Path of Equal Weight (30)-PAT甲级真题(树的遍历)

1079. Total Sales of Supply Chain (25)-PAT甲级真题(dfs,bfs,树的遍历)

1086. Tree Traversals Again (25)-PAT甲级真题

1090. Highest Price in Supply Chain (25)-PAT甲级真题

1094. The Largest Generation (25)-PAT甲级真题(bfs,dfs,树的遍历)

1102. Invert a Binary Tree (25)-PAT甲级真题

1106. Lowest Price in Supply Chain (25)-PAT甲级真题(dfs,bfs,树的遍历)

1115. Counting Nodes in a BST (30)-PAT甲级真题(二叉树的遍历,dfs)

1119. Pre- and Post-order Traversals (30)-PAT甲级真题(前序后序转中序)

图的遍历

1013. Battle Over Cities (25)-PAT甲级真题(图的遍历,统计强连通分量的个数,dfs)

1021. Deepest Root (25)-PAT甲级真题(图的遍历,dfs,连通分量的个数)

1034. Head of a Gang (30)-PAT甲级真题(图的遍历dfs)

1072. Gas Station (30)-PAT甲级真题(Dijkstra)

1076. Forwards on Weibo (30)-PAT甲级真题(图的遍历bfs)

深度优先搜索

1103. Integer Factorization (30)-PAT甲级真题(dfs深度优先)

广度优先搜索

1091. Acute Stroke (30)-PAT甲级真题(广度优先搜索)

哈希、散列

1048. Find Coins (25)-PAT甲级真题(Hash散列)

1050. String Subtraction (20)-PAT甲级真题(哈希)

1092. To Buy or Not to Buy (20)-PAT甲级真题

1084. Broken Keyboard (20)-PAT甲级试题

动态规划

1007. Maximum Subsequence Sum (25)-PAT甲级真题(动态规划dp)

1040. Longest Symmetric String (25)-PAT甲级真题(动态规划)

1045. Favorite Color Stripe (30)-PAT甲级真题

1068. Find More Coins (30)-PAT甲级真题(01背包)

排序

1012. The Best Rank (25)-PAT甲级真题

1016. Phone Bills (25)-PAT甲级真题

1025. PAT Ranking (25)-PAT甲级真题

1028. List Sorting (25)-PAT甲级真题

1055. The World’s Richest (25)-PAT甲级真题

1062. Talent and Virtue (25)-PAT甲级真题

1075. PAT Judge (25)-PAT甲级真题

1080. Graduate Admission (30)-PAT甲级真题

1083. List Grades (25)-PAT甲级真题

STL的使用

1022. Digital Library (30)-PAT甲级真题(map映射)

1039. Course List for Student (25)-PAT甲级真题

1047. Student List for Course (25)-PAT甲级真题

1054. The Dominant Color (20)-PAT甲级真题

1063. Set Similarity (25)-PAT甲级真题

1071. Speech Patterns (25)-PAT甲级真题(map应用)

1100. Mars Numbers (20)-PAT甲级真题

链表处理

1032. Sharing (25)-PAT甲级真题

1052. Linked List Sorting (25)-PAT甲级真题

1074. Reversing Linked List (25)-PAT甲级真题

1097. Deduplication on a Linked List (25)-PAT甲级真题

大整数

1023. Have Fun with Numbers (20)-PAT甲级真题(大整数运算)

1024. Palindromic Number (25)-PAT甲级真题(大整数相加)

二叉搜索树

1043. Is It a Binary Search Tree (25)-PAT甲级真题

Complete Binary Search Tree (30)-PAT甲级真题

1099. Build A Binary Search Tree (30)-PAT甲级真题

平衡二叉树

1066. Root of AVL Tree (25)-PAT甲级真题

堆排序

1098. Insertion or Heap Sort (25)-PAT甲级真题(堆排序)

贪心算法

1033. To Fill or Not to Fill (25)-PAT甲级真题(贪心算法)

1037. Magic Coupon (25)-PAT甲级真题(贪心算法)

1038. Recover the Smallest Number (30)-PAT甲级真题(贪心算法)

1067. Sort with Swap(0,*) (25)-PAT甲级真题(贪心算法)

1070. Mooncake (25)-PAT甲级真题

并查集

1107. Social Clusters (30)-PAT甲级真题(并查集)

1114. Family Property (25)-PAT甲级真题(并查集)

1118. Birds in Forest (25)-PAT甲级真题(并查集)

树状数组

1057. Stack (30)-PAT甲级真题(树状数组)

原文出处:

作者:柳婼

链接:https://www.liuchuo.net/archives/2502

以下内容作为补充

线性结构:数组,栈,队列看一下就过了;

链表自己实现了一遍;

常见排序理解并会写。

树:二叉搜索树熟练(尤其是各种遍历);AVL树和红黑树尽力理解了一下,我是真的记不住……

图:BFS, DFS, 最短路(dijkstra, spfa, floyd)。这里的题目最常见,要能写得很灵活。

其它:堆,背包问题(良心教程 https://github.com/tianyicui/pack/blob/master/V2.pdf),贪心问题, KMP(还没遇到过题目)。

【转载】【PAT】PAT甲级题型分类整理的更多相关文章

  1. PAT甲级题分类汇编——序言

    今天开个坑,分类整理PAT甲级题目(https://pintia.cn/problem-sets/994805342720868352/problems/type/7)中1051~1100部分.语言是 ...

  2. PAT(甲级)2017年秋季考试

    PAT(甲级)2017年秋季考试 D题红黑树待补21/30 大佬的代码,看着想哭,这才是艺术啊 A Cut Integer 模拟题 #include<bits/stdc++.h> usin ...

  3. PAT(甲级)2017年春季考试

    PAT(甲级)2017年春季考试 A.Raffle for Weibo Followers #include<bits/stdc++.h> using namespace std; int ...

  4. (zhuan) 126 篇殿堂级深度学习论文分类整理 从入门到应用

    126 篇殿堂级深度学习论文分类整理 从入门到应用 | 干货 雷锋网 作者: 三川 2017-03-02 18:40:00 查看源网址 阅读数:66 如果你有非常大的决心从事深度学习,又不想在这一行打 ...

  5. 按失真类型分类整理IQA数据集:TID2013

    前面已经整理了TID2008,这次整理TID2013的工作相对较简单,只需要改代码的一部分就可以了,首先我大概介绍一些TID2013. TID2013是TID2008的加强版,链接如下:http:// ...

  6. Android Studio 分类整理 res/layout 中的布局文件

    •准备工作 新建一个名为 TestLayouts 的项目: 进入 Project 模式: 来到 TestLayouts/app/src/main/res/layout 文件夹下: •分类整理 layo ...

  7. PAT甲级题分类汇编——杂项

    本文为PAT甲级分类汇编系列文章. 集合.散列.数学.算法,这几类的题目都比较少,放到一起讲. 题号 标题 分数 大意 类型 1063 Set Similarity 25 集合相似度 集合 1067 ...

  8. PAT甲级题分类汇编——图

    本文为PAT甲级分类汇编系列文章. 图,就是层序遍历和Dijkstra这一套,#include<queue> 是必须的. 题号 标题 分数 大意 时间 1072 Gas Station 3 ...

  9. PAT甲级题分类汇编——树

    本文为PAT甲级分类汇编系列文章. AVL树好难!(其实还好啦~) 我本来想着今天应该做不完树了,没想到电脑里有一份讲义,PPT和源代码都有,就一遍复习一遍抄码了一遍,更没想到的是编译一遍通过,再没想 ...

随机推荐

  1. Nginx(三)--Nginx 的高可用

    1. Nginx 进程模型简介 多进程+多路复用 master 进程 . worker 进程  启动nginx,查看nginx的线程,可以发现: [root@localhost ~]# ps -ef ...

  2. 利用 Redis 来优化功能部署和错误分类

    来源:Redislabs 作者:Shabih Syed 翻译:Kevin (公众号:中间件小哥) 为了让系统运行更流畅,又避免 Knights Capital 在 2012 年犯下的 4.6 亿美元的 ...

  3. 《吊打面试官》系列-ConcurrentHashMap & HashTable

    你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和 ...

  4. CouchDB学习-维护

    官方文档 1 压缩 压缩操作是通过从数据库或者视图索引文件中移除无用的和老的数据减少硬盘使用空间.操作非常简单类似于其他数据库(SQLite等)管理系统. 在压缩目标期间,CouchDB将创建扩展名为 ...

  5. 1、手写Unity容器--极致简陋版Unity容器

    模拟Unity容器实例化AndroidPhone 思路: 1.注册类型:把类型完整名称作为key添加到数据字典中,类型添加到数据字典的value中 2.获取实例:根据完整类型名称也就是key取出val ...

  6. C#程序编写高质量代码改善的157个建议【10-12】[创建对象时需要考虑是否实现比较器、区别对待==和Equals]

    前言 建议10.创建对象时需要考虑是否实现比较器 建议11.区别对待==和Equals 建议12.重写Equals时也要重写GetHashCode 建议10.创建对象时需要考虑是否实现比较器 有对象的 ...

  7. ORA-27140: attach to post/wait facility failed

    Errors in file /home/u01/app/oracle/diag/rdbms/hnybdb21/hnybdb211/trace/hnybdb211_j000_143099.trc:OR ...

  8. centos和rhel中软件包管理常用命令

    软件包管理的常用命令  rpm软件包的管理  查询类: rpm  -q 软件包的查询: rpm  -q  软件包的名字   //你的记住软件包完整名字 模糊查询:rpm  -qa  |  grep   ...

  9. soapUI 之 测试文件上传 [6]

    在接口测试中会遇到需要上传文件的操作,比如头像修改等.那么soapui是怎么实现这部分测试的呢.以下以文件上传接口为例. 一.获取文件上传接口 可以通过开发直接提供的接口文档,或者自己抓包获取接口信息 ...

  10. Python高级特性——生成器(generator)

    通过上节的学习,我们知道使用列表生成式,可以直接创建一个列表.但是,有些时候,受到内存的限制等实际情况,列表生成式无法满足.比如,一个长度为1000万的列表,普通内存根本就不够,又或者实际处理的过程中 ...