![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UVA
qq_38232157
这个作者很懒,什么都没留下…
展开
-
UVA 439 Knight Moves(算法竞赛入门经典,bfs,裸题)
/*算法竞赛入门经典177页,bfs,裸题本题要点:1、马走日,有8个方向,写好8 个方向, for(int i = 0; i < 8; ++i)2、套用 bfs 的模型即可。*/#include <cstdio>#include <cstring>#include <iostream>#include <queue>using namespace std;const int MaxN = 9;bool vis[MaxN][Max原创 2020-09-02 18:50:24 · 216 阅读 · 0 评论 -
UVA 10305 Ordering Tasks(算法竞赛入门经典,拓扑排序,裸题)
算法竞赛入门经典167页,拓扑排序,裸题本题要点:1、用 deg[x], 存放点x的入度。先把所有入度为0 的点加入队列 queue;2、每次从队头取出一个点 y, 将y 所指向的所有点的入度减去1. 如果某点度数为0, 把该点也加入队列。#include <cstdio>#include <cstring>#include <iostream>#include <queue>using namespace std;const int Max原创 2020-09-02 12:22:34 · 95 阅读 · 0 评论 -
UVA 127 “Accordian“ Patience(算法竞赛入门经典,模拟,stl)
算法竞赛入门经典179页,模拟,stl题目意思:模拟题,关键理解题目意思和样例有 52 张扑克牌,一开始,全部排列成一行,每张牌看做是一堆牌。每次从左到右扫描, 假设当前扫描到第 x 堆牌(假设这堆牌的最上面是 x),x 牌如果 和 x 前面第 1 张 或者第 3 张 牌匹配的话,就把第 x 堆牌最上面的那一张牌,放到与之匹配的那张牌所在堆的最上面。优先选择最左边的牌。 如果这张牌的 左边 第1 和第3 都与之匹配,那么优先 放在第 3 个的位置。本题要点:1、 每一堆牌,用 stack 来存,原创 2020-09-01 21:32:54 · 152 阅读 · 0 评论 -
UVA 804 Petri Net Simulation(算法竞赛入门经典,模拟)
算法竞赛入门经典177页,模拟题目意思:np个节点 p[1], p[2], … , p[np], 每个节点有若干个牌子 token, 节点与节点之间不直接联系,中间间隔了一个叫 发射站 trans 的玩意。每一节点向外只能指向一个 发射站。并且,一个节点指向同一个发射站若干次,节点就需要若干个 token 。发射站也是不能直接相连,多个节点,可以同时指向一个发射站;每一个发射站,可能指向若干个 节点。一个发射站,是否能点火发射,主要看看这个发射站 Trans ,指向 Trans 的每一个节点,原创 2020-09-01 16:50:09 · 224 阅读 · 0 评论 -
UVA 12118 Inspector‘s Dilemma(算法竞赛入门经典, 图的连通,欧拉路径)
算法竞赛入门经典181页, 图的连通,欧拉路径题目意思:有n 座城市,每两个城市之间都有一条双向道路。现在给出 m 条道路,连接了若干城市,现在要求,寻找任意一条路径,使得这条路径,经过这m条道路。本题要点:1、首先考虑图的连通问题:假如该图有 block_num 个连通块, 每个连通块都存在欧拉路径,那么,只需要把这 block_num个连通块,连起来即可。因此只需要添加 block_num - 1 条边(只有一点的连通块不考虑)。某个连通块存在欧拉路径,说明这连通块,最多只有两点是奇度数原创 2020-09-01 02:10:43 · 271 阅读 · 0 评论 -
UVA 12504 Updating a Dictionary(算法竞赛入门经典,stl)
算法竞赛入门经典,stl本题要点:1、处理每一条字符串的时候,使用 字符串流stringstream 来处理,先把原来的字符串中的字符 ‘{’, ‘}’, ‘,’ 替换为 空格 ’ ', 然后就好处理了。2、使用 map<string, string> 来记录每一条字符串中对应 的 key 和 value3、寻找第二天字符串新 增加的, 删除的, 修改的字符串,各自用一个 set 来存,寻找一个 map 中,是否存在字符串 str , 用find函数。#include<bi原创 2020-08-30 22:56:40 · 97 阅读 · 0 评论 -
UVA 12100 Printer Queue(算法竞赛入门经典,stl, 优先级队列)
算法竞赛入门经典,stl, 优先级队列题目意思:一台打印机,有一个打印序列,表示各个打印任务的优先级。然后,每次要打印当前任务时候,看看队列中后面是否有任务的优先级更紧急,如有,就把当前的任务加入到队列的末尾。否则,打印当前的队列。本题要点:1、使用 队列 queue ,和 priority_queue 来模拟。用数组 prio_num[i] 表示优先级为i的有多少个队列 queue 存放的是各个打印任务,priority_queue 存放的是所有的优先级,然后堆顶 top 存放的都是最大的优原创 2020-08-30 18:41:19 · 171 阅读 · 0 评论 -
UVA 11039 Building designing(算法竞赛训练指南,排序)
算法竞赛训练指南78页,排序题目意思:有n个非0的整数,要求按某种顺序排,使得这些数的绝对值从小到大,而且正数和负数间隔排列。本题要点:1、用结构体 node 来记录每一个数的绝对值 和正负, 按绝对值排序,然后从左到右扫描,找出正负相隔的一个数列。#include <iostream>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#原创 2020-08-12 13:53:45 · 120 阅读 · 0 评论 -
UVA 1160 X-Plosives(算法竞赛训练指南,并查集)
并查集, 算法竞赛训练指南, 191页题目意思:所以的元素看做是顶点,每两点连线,如果图中存在环的话,就会爆炸本题要点:1、每次读入 a, b, 如果 a 和 b 在同一个集合,就舍弃这两点。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MaxN = 100010;int a[MaxN], b[MaxN], fa[MaxN];in原创 2020-08-10 16:08:18 · 108 阅读 · 0 评论 -
UVa 1326 Jurassic Remains(训练指南, 位运算)
算法竞赛训练指南,57页本题要点:1、位运算1)每一个字符串都是大写字母组成,因此,每一个字符串用一个整数的二进制表示,比如: “ABD” 用二进制整数 (1011) = 11 来表示2)字符串数量很小, n <= 24; 可以用 一个 整数 的二进制 数位表示是否选择了第i个字符串比如: (0011001) == 25 表示选择了第 0, 第3 和 第4 个字符串2、 先计算 前一半 n / 2 个字符串可能得到的 异或值。n / 2 个字符串 中,选择第i个字符串或不选第i个字符串原创 2020-05-24 18:54:40 · 111 阅读 · 0 评论 -
UVa 10755 Garbage Heap (训练指南,三维前缀和)
算法竞赛训练指南,54 页, 三维的前缀和本题要点:1、 定义前缀和:将长方体切片(按z左边), 每一片就是一个平面;sum[i][j][k]平面上[1,1]到[i][j]在高度为 z == k 时的区域前缀和;二维的前缀和公式:sum(x, y) = array[x][y] + sum(x - 1, y) + sum(x, y - 1) - sum(x - 1, y - 1)2、求解最大和 的子 长方体:遍历底面的左边范围 [x1, x2], [y1, y2] (此时相当于固定了底面),原创 2020-05-24 13:23:03 · 181 阅读 · 0 评论 -
UVa 11549 Calculator Conundrum (训练指南,Floyd 判圈算法)
算法竞赛训练指南, 42 页注意:1、 用数组来记录一个数的各位的数字2、 快慢指针来记录链表环的入点(Floyd 判圈算法)#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int N, K, Test;int next(int n, int k){ if(0 == k) { return原创 2020-05-23 15:52:08 · 113 阅读 · 0 评论 -
UVa 11520 Fill the Square (训练指南)
训练指南,33页1、从左到由,从上到下,依次扫描每一个字符。如果 grid[i][j] == ‘.’, 那么,就在位置(i, j) 写上一个最小的大写字母。该字母和 (i, j) 上下左右 4 个位置的字母不相同2、 简单的水题。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MaxN = 10 + 5;int n, Test;c原创 2020-05-16 16:04:57 · 77 阅读 · 0 评论 -
UVa 11235 Frequent values (RMQ)
算法竞赛训练指南,198 页本题要点:1、对 int count[MaxN]; //第i段出现的次数进行RMQcount 数组的坐标是从1开始的,而数组 d[MaxN][20]则从 0 开始, 在函数RMQ_init 中注意一下2、根据指南书中的解题思路,关键是求出4个数组出来int count[MaxN]; //第i段出现的次数int num[MaxN]; //num[p] 表示位置p所在段的编号int Left[MaxN]; //Left[p] 表示位置p所在段的左端点int Ri原创 2020-05-14 22:35:27 · 103 阅读 · 0 评论 -
UVa 10881 Piotr's Ants (排序)
题目意思:算法竞赛训练指南。 9 页1、 掉头等于 对穿而过2、 每一只蚂蚁的相对位置都是没有改变的#include <algorithm>#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MaxN = 10010;int Test;int L, T, N;char direc[2] = {0};//表示状态int原创 2020-05-14 00:29:35 · 77 阅读 · 0 评论