- 博客(66)
- 收藏
- 关注
原创 字符串处理:PAT1050 String Subtraction
解题步骤: 可以使用两层for循环,外层遍历s1字符串取字符,内层遍历s2字符串查看字符是否合法,但这样可能超时。 1、先遍历s2,把其出现的字符都存到一个哈希表中; 2、遍历s1,若字符在哈希表中出现,就删掉;若没有出现,加入到新字符串中。代码实现:#include <iostream>#include <string>using namespace std;#include <unordered_set&...
2021-10-03 10:21:10 238
原创 字符串处理:PAT1036 Boys vs Girls
#include <iostream>using namespace std;int main(){ string male_name,male_id; string female_name, female_id; int male_grade, female_grade; int n; cin >> n; string name, gender, id; int grade; for (int i = 0; .
2021-10-03 10:02:46 239
原创 字符串处理:PAT1035 Password
解题步骤: 1、问题需要在最后一起输出结果,所以需要用数组把每一个结果逐一存储起来; 2、把每个输入id和对应的字符串存储到数组中,并将字符串进行处理;如果处理后发生改变,保存并计数;否则不做操作。代码实现:#include <iostream>using namespace std;#define maxn 1010string change(string& s){ string str; for (int i =...
2021-10-02 09:41:24 232
原创 字符串处理:PAT1006 Sign In and Sign Out
解题步骤: 1、需要记录的是开门和关门id,还有最大关门和最小开门时间用于比对; 2、逐个输入字符串,可以直接用字符串比对的方式去找最大值和最小值,字符串默认的比对方式是从头开始按照字典序,正好符合题目要求。解法2: 记录每个人进出的小时,分钟,秒,依次比对,这样会非常麻烦,但是比直接用字符串比对符合实际。#include <iostream>using namespace std;#if 0#define maxn 16...
2021-10-01 11:20:21 173
原创 字符串处理:PAT1005 Spell It Right
解题步骤: 1、数字的位数n很大,只能用字符串存储; 2、逐位把字符串中的字符转为数字后累加,将和值在转成一个新的字符串; 3、把新字符串的每个字符转换为数字后,用英文的形式输出。代码实现:#include <iostream>#include <string>using namespace std;int main(){ string s; cin >> s;...
2021-10-01 11:00:32 116
原创 字符串处理:PAT1001 A+B Format
解题步骤: 1、处理输入数据a和b,并加和; 2、将和值转化为字符串类型; 3、建立新字符串,将原字符串从后向前遍历,逐位前插到新字符串中,如果前面还有数字并且写入满3个字符数时插入一个逗号。代码实现:#include <iostream>#include <string>using namespace std;int main(){ int a, b; cin >> a >&...
2021-10-01 10:40:43 100
原创 哈希表应用:POJ1840 公式
题目描述:Consider equations having the following form:a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0The coefficients are given integers from the interval [-50,50].It is consider a solution a system (x1, x2, x3, x4, x5) that verifies the equation, xi∈[-50,50], xi !=
2021-09-30 13:50:21 292
原创 二分搜索应用:POJ1759 花环
题目描述:The New Year garland consists of N lamps attached to a common wire that hangs down on the ends to which outermost lamps are affixed. The wire sags under the weight of lamp in a particular way: each lamp is hanging at the height that is 1 millimeter
2021-09-30 13:22:09 203
原创 二分法穷举的一般格式
题目中需要找最大值: 需要尽量向上靠拢,判定成功后提高下界,int low = 0, high = max;int ans = 0;while (high >= low){ int mid = (high + low) / 2; if (Judge(mid)) { ans = mid; low = mid + 1; } else { high = mid - 1; }...
2021-09-30 10:46:30 408
原创 二分搜索应用:POJ3258
题目描述:Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a river. The excitement takes place on a long, straight river with a rock at the start and another rock at the e...
2021-09-30 10:37:28 127
原创 找关键路径:SDUTOJ2498 AOE网上的关键路径
题目描述:一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。 AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG。与AOV不同,活动都表示在了边上,如下图所示:如上所示,共有11项活动(11条边),9个事件(9个顶点)。整个工程只有一个开始点和一个完成点。即只有一个入度为零的点(源点)和只有一个出度为零的点(汇点)。 关键路径:是从开始点到完成点的最长路径的长度。路径的长度是边上活动耗费的时间。如上...
2021-09-28 10:19:57 179
原创 拓扑排序:POJ2367 家族树
题目描述:The system of Martians' blood relations is confusing enough. Actually, Martians bud when they want and where they want. They gather together in different groups, so that a Martian can have one parent as well as ten. Nobody will be surprised ...
2021-09-27 10:23:59 141
原创 拓扑排序算法
算法步骤: 1、遍历所有结点,找出入度为0的结点作为源点输出; 2、在图中删除源点作为弧尾的有向边; 3、重复1和2,直到不存在入度为0的阶段; 4、若输出的点数小于结点总数说明图中有环,无法得到完整的拓扑序列,只能输出有确定先后关系的那一部分序列。代码实现:#include <iostream>#include <stack>using namespace std;#define maxn ...
2021-09-26 20:59:44 275
原创 结点间来回最短距离:POJ3268 银牛聚会
题目描述:One cow from each ofNfarms (1 ≤N≤ 1000) conveniently numbered 1..Nis going to attend the big cow party to be held at farm #X(1 ≤X≤N). A total ofM(1 ≤M≤ 100,000) unidirectional (one-way roads connects pairs of farms; roadirequi...
2021-09-26 10:06:55 107
原创 判负环:POJ3259 虫洞
题目描述:While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that delivers you to its destination at a time that is BEFORE you entered the wormhole! Each o...
2021-09-25 10:54:38 119
原创 SPFA算法:判断负环
算法同利用SPFA算法求单源点最短路径一致SPFA算法:找单源点最短距离_可惜浅灰的博客-CSDN博客再此基础上增加了sum数组,用于统计各个结点的入队次数,只要发现有结点的出队次数不小于结点总数,则有负环;反之,若算法函数运行结束后仍然没有结点的入队次数不小于结点总数,则没有负环。代码实现:#include <iostream>#include <queue>using namespace std;#define maxn 100int n, m;.
2021-09-25 10:15:57 526
原创 SPFA算法:找单源点最短距离
SPFA算法: Dijkstra算法的改进版,整体思想同Dijkstra算法一致。1、保存一个带权有向图 使用链式前向星保存一个有向图class Edge{public: int to; int weight; int next;};Edge e[maxn << 1];void InsertEdge(int u, int v, int w) { e[++cnt].to = v; e[cnt].next = head[u];...
2021-09-24 21:08:48 197
原创 有向图中判正环:POJ1860 货币交换
题目描述:Several currency exchange points are working in our city. Let us suppose that each point specializes in two particular currencies and performs exchange operations only with these currencies. There can be several points specializing in the sa...
2021-09-24 18:08:45 112
原创 Bellman-Ford算法:有向图中判负环
1、有向图的存储:用边集数组存储一个有向图class Edge{public: int u; int v; int weight;};Edge edge[maxn << 1];void InsertEdge(int u, int v, int w){ edge[++cnt].u = u; edge[cnt].v = v; edge[cnt].weight = w;}void CreateGraph()...
2021-09-24 14:03:59 1333
原创 Dijkstra算法应用:POJ1797 重型运输
题目描述:BackgroundHugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand business. But he needs a clever man who tells him whether there really is a way from the place his customer has build his giant steel crane to t...
2021-09-24 11:14:23 336
原创 Floyd算法:各顶点之间最短路径
非常简单,利用插点法,在边的两个顶点之间插入一个新结点,看是否能够缩短原来两结点之间的距离。代码实现:#include <iostream>using namespace std;#define maxn 100#define max_value 0x3f3f3f3fint dist[maxn][maxn], p[maxn][maxn];class Graph{public: int edge[maxn][maxn]; int ve...
2021-09-23 09:33:13 268
原创 Dijkstra算法:找单源点最短路径
Dijkstra算法: 把所有结点划分成连个集合V和V-S、S中是已经找到最短距离的结点集合、V-S是暂时还没有找到最短距离的结合,初始时S中只有源点,每次在V-S中找出距离S中距离最小的结点t,将其加入S集合,同时更新V-S中结点到S的最短距离,直到V-S为空,得到图中所有结点距离源点的最短距离。1、保存一个带权有向图用邻接矩阵存储一个有向图,若有u到v有边,则edge[u][v]记录权值,否则将其记录为无穷大class Graph{pu...
2021-09-22 17:16:14 336
原创 有向图中强连通分量缩点:POJ2553 图的底部
问题描述:We will use the following (standard) definitions from graph theory. LetVbe a nonempty and finite set, its elements being called vertices (or nodes). LetEbe a subset of the Cartesian productV×V, its elements being called edges. ThenG=(V...
2021-09-22 15:15:51 102
原创 统计无向图中割点的个数:POJ1144 网络
题目描述:A Telephone Line Company (TLC) is establishing a new telephone cable network. They are connecting several places numbered by integers from 1 to N . No two places have the same number. The lines are bidirectional and always connect together t...
2021-09-22 12:43:59 139
原创 Tarjan算法应用:统计有向图中的强连通分量
有向图中的强连通分量是指,任何两个顶点都能相互到达的子图。有向图中的Tarjan算法步骤:1、构建一个有向图;一个时间戳数组dfn[],表示遍历的次序;一个回溯点数组low[],表示能通过非父子边回溯到的最早结点遍历序号; 2、将一个根节点传入函数,初始时:dfn = low = 次序, 3、将根节点入栈并标记; 4、遍历邻接点,若邻接点未被访问,递归,递归后更新low值;若邻接点已经访问且在栈中,说明之间有有...
2021-09-21 13:52:43 182
原创 Tarjan算法应用:统计无向图中的连通分量
连通分量是指在无向图中,任意两个顶点能互相到达的极大连通子图,再填任一结点就不能互相连通。 Tarjan算法步骤: 1、构建一个无向图;一个时间戳数组dfn[],表示遍历的次序;一个回溯点数组low[],表示能通过非父子边回溯到的最早结点遍历序号; 2、将一个根节点和其父结点(根节点的父结点设为他自己)传入函数,初始时:dfn = low = 次序; 3、遍历邻接点,若邻接点时它父亲,什么都不做;若邻接点未被访问,递归,递归后更新...
2021-09-21 10:42:25 1002
原创 Tarjan算法应用:无向图找割点
无向图中的割点是指去掉一个结点后,分裂成两个或更多互不相通的子图,这个结点称为割点。Tarjan算法步骤: 1、构建一个无向图;一个时间戳数组dfn[],表示遍历的次序;一个回溯点数组low[],表示能通过非父子边回溯到的最早结点遍历序号; 2、将一个根节点和其父结点(根节点的父结点设为他自己)传入函数,初始时:dfn = low = 次序; 3、遍历邻接点,若邻接点时它父亲,什么都不做;若邻接点未被访问,递归,递归后更新low值;若邻接点已经访问...
2021-09-20 10:40:13 275
原创 Tarjan算法应用:无向图找桥
无向图中的桥是指去掉一条无向边后,分裂成两个互不相通的子图,这条无向边称为桥。Tarjan算法步骤: 1、构建一个无向图;一个时间戳数组dfn[],表示遍历的次序;一个回溯点数组low[],表示能通过非父子边回溯到的最早结点遍历序号; 2、将一个根节点和其父结点(根节点的父结点设为一个无效值)传入函数,初始时:dfn = low = 次序; 3、遍历邻接点,若邻接点时它父亲,什么都不做;若邻接点未被访问,递归,递归后更新low值;若邻...
2021-09-19 16:29:12 865
原创 一条路径遍历整张图:POJ2488 一个骑士的旅行
题目描述:The knight is getting bored of seeing the same black and white squares again and again and has decided to make a journeyaround the world. Whenever a knight moves, it is two squares in one direction and one square perpendicular to this. The ...
2021-09-19 15:17:53 139
原创 图的连通区域划分:UVA572 油田
题目大意:输入多个m行n列的矩阵,用0表示输入结束。找出有多少块石油区域,用“@”代表石油,假如两个“@”在横,竖或对角线上相邻,就说它们位于同一区域,对于每个输入,输出一个数表示有几个石油区域。输入样例:1 1*3 5*@*@***@***@*@*1 8@@****@*5 5****@*@@*@*@**@@@@*@@@**@0 0输出样例:0122解题思路: 类似于找图中的连通分量个数,把矩阵看成图,八个方...
2021-09-19 10:51:06 207
原创 BFS应用:UVA1599 理想路径
题目描述:给定一个n个点m条边的无向图,每条边上都涂有1种颜色。求点1到点n的一条路径,使得经过的边数最少,在此前提下,经过边的颜色序列最小。可能有自环与重边。输入保证至少存在一条连接1和n的道路。输入:输入共m+1行第一行2个整数:n和m。以后m行,每行空格隔开的3个整数ai,bi,ci,表示在ai,bi之间有一条颜色为ci的道路。输出:输出共两行第一行1个正整数k,表示1到n至少需要经过k条边。第二行包含k个空格隔开的正整数,表示从1到n依次经过的边的颜色。
2021-09-17 20:43:33 310
原创 BFS应用:POJ3278 抓牛
题目描述:Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a pointN(0 ≤N≤ 100,000) on a number line and the cow is at a pointK(0 ≤K≤ 100,000) on the same number line. Farmer John has two ...
2021-09-17 15:54:11 136
原创 图的广度优先搜索(BFS)
广度优先搜索是从顶点出发,先遍历完其所有邻接点,在依次遍历访问过结点的邻接点,像声波扩散;具有先来先服务特性,适合用队列。算法步骤: 1、建立bool类型访问标记数组,并初始化所有元素为false,代表每个结点都没有被访问; 2、以图中的某个指定结点作为顶点,访问并标记后入队; 3、将队头元素出队,访问其所有邻接点,若未访问则访问并标记后入队,循环操作直到队列为空。代码实现:#include <iostream&g...
2021-09-17 15:14:01 245
原创 图的深度优先搜索(DFS)
深度优先是指要一条路走到黑,遍历具有后来先服务的特性,适合用递归。算法步骤: 1、建立bool类型访问结点标记数组,并初始化所有元素为false,代表每个结点都没有被访问; 2、以图中的的一个结点为原点v,访问v并在访问标记数组中标记已访问; 3、遍历v的所有邻接点,若有未访问,递归。代码实现:#include <iostream>using namespace std;#define maxn 10bool visit...
2021-09-15 18:49:45 346 2
原创 bitset容器应用:洛谷 P2881 排奶牛
题目描述:Each of Farmer John's N cows (1 ≤ N ≤ 1,000) produces milk at a different positive rate, and FJ would like to order his cows according to these rates from the fastest milk producer to the slowest.FJ has already compared the milk output rate for M
2021-09-15 15:22:58 219 1
原创 反向建图的妙用:P3916 图的遍历
题目描述:给出N个点,M条边的有向图,对于每个点v,求A(v)表示从点v出发,能到达的编号最大的点。输入:第1 行,2 个整数N,M。接下来M行,每行2个整数Ui、Vi,表示边(Ui,Vi)。点用1,2,⋯,N编号。输出:N 个整数A(1),A(2),⋯,A(N)。输入样例:4 31 22 44 3输出样例:4 4 3 4解题思路: 求图中各结点能到达的最大结点,正向思路的话可以循环正向遍历结点,定义一个最大值变量记录该结点能到达的...
2021-09-15 10:26:54 195
原创 图的存储——链式前向星
1、定义顶点数组和边集数组 在顶点数组中,下标代表边的一个顶点,存储的元素是该顶点的第一条边在边集数组中的下标。 边类有3个成员:边的另一个顶点、边的权值、顶点的下一条边的下标。int head[max_vertex_num];class Edge{public: int to; //边的另一个顶点 int weight; //边的权值 int next; //下一条边的下标};Edge edge[max_edge_n...
2021-09-14 13:56:29 107
原创 邻接矩阵存储无向图
邻接矩阵的优势: 可以快速判断两个顶点之间是否有边; 方便计算各顶点的度,无向图中:顶点i的度 = 邻接矩阵第i行(列)中的元素和;有向图中:顶点的出度 = 邻接矩阵第i行中的元素和,顶点的入度 = 邻接矩阵第i列中的元素和。...
2021-09-14 12:58:19 2911
原创 哈夫曼编码压缩比问题:POJ1521 熵
题目描述:An entropy encoder is a data encoding method that achieves lossless data compression by encoding a message with "wasted" or "extra" information removed. In other words, entropy encoding removes information that was not necessary in the first place t
2021-09-13 11:26:04 661
原创 树的最小带权路径问题:POJ3253 修篱笆
题目描述:Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needsN(1 ≤N≤ 20,000) planks of wood, each having some integer lengthLi(1 ≤Li≤ 50,000) units. He then purchases a single long ...
2021-09-13 10:38:44 280
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人