算法竞赛入门经典
文章平均质量分 58
跃迁引擎启动-
这个作者很懒,什么都没留下…
展开
-
Broken Keyboard UVa11988
本题关键为链表的数组实现,用nxt数组模拟txt中元素之间的指向关系。构造nxt数组时,头元素指向尾0,遍历txt并将元素的指向关系插入到nxt中。#include <iostream> #include <cstring> using namespace std; int nxt[100005]; char txt[100005]; int main() { while...原创 2018-02-10 21:06:51 · 175 阅读 · 0 评论 -
Play on Words UVa10129
欧拉回路模板题,wa了半天才过就很难受。首先题目给了一个有向图,对于一个有向图的欧拉回路,要求每个节点的入度等于出度或者存在两个点入度出度相差1。然后将图恢复为无向图,使用dfs判断图的联通性。P.S. 学习队列.push(并查集)。。一开始试了好几种写法,所以ac代码有很多历史遗留产物,比如have数组。。#include <iostream> #include <cstdio...原创 2018-03-27 22:38:40 · 226 阅读 · 0 评论 -
Ordering Tasks UVa10305
拓扑排序模板题,参考紫书。使用邻接矩阵建图,开一个vis数组记录节点是否被访问。从第一个节点开始遍历,只要此节点未被访问过,则对其进行dfs。dfs过程中,先对正在访问的节点记录为-1,则当后面dfs深入时,遇到指向的节点vis值为-1,则出现了环图,返回false,并逐层将false返回,每个节点的所有后继访问结束时,将vis值置为1,即已经被访问,之后到达dfs最深层次即为拓扑排序的尾部节点,...原创 2018-03-26 23:04:06 · 164 阅读 · 0 评论 -
Not so Mobile UVa839
一开始,自己题意貌似理解错误,物理太差了。瞅了一眼紫书的源码,才明白自己原来写的有问题,忽略了对支点的考虑,而且也不需要开数组存整棵树。紫书源码,精妙之处在于对每个节点质量更新的处理,使用了引用,更深处的递归的质量变化将会更新当前节点的质量。AC代码(参看紫书)#include <iostream> using namespace std; int solve(int& w)...原创 2018-03-19 23:54:15 · 178 阅读 · 0 评论 -
HDU1029
本题对时间非常敏感,一开始思路是使用map,后来注意到直接输入然后排序,输出中位数即可,使用vector时发生TLE,改成普通数组ac。#include <iostream> #include <algorithm> #include <cstring> using namespace std; int arr[1000010]; int main() { ...原创 2018-03-05 23:39:27 · 327 阅读 · 0 评论 -
Trees on the level UVa122
一开始写的指针实现的版本,貌似存在内存泄漏问题,输入之间有蜜汁相互作用,后改为数组实现,AC。指针版本:#include <cstdio> #include <queue> #include <vector> using namespace std; char x[300], cmd[300]; int flag; struct node{ int ...原创 2018-03-13 00:34:03 · 195 阅读 · 0 评论 -
Tree UVa548
本题要求使用一个二叉树中序遍历和后序遍历的结果,反向构造出树。看的紫书的代码,建树过程主要通过build函数,传递4个参数,中序遍历起点、终点,后序遍历起点、终点,递归地建出整个树,注意到,后序遍历的最后一个数据为当前子树的根节点,在中序遍历结果中找到该节点,可以得到该节点左边范围为左子树,右边为右子树。此时开left和right两个数组,直接对权值进行编号,数据记录了左右儿子的序号,也就是左右儿...原创 2018-03-15 00:44:22 · 245 阅读 · 0 评论 -
Matrix Chain Multiplication UVa442
Times: 23 mins栈在表达式计算的应用,参考数据结构课程。#include <iostream> #include <stack> #include <string> #include <utility> #define p pair<int, int> using namespace std; p x[30]; long lo...原创 2018-02-10 21:37:52 · 217 阅读 · 0 评论 -
Rails UVa514
TImes: 17 mins.栈混洗模板,模拟混洗过程即可。#include <iostream> #include <stack> using namespace std; stack<int> A, C; int res[1005] = { 0 }; void clear(stack<int> &x) { while (!x.em...原创 2018-02-10 21:36:29 · 189 阅读 · 0 评论 -
Concurrency Simulator UVa210
Times: 2 hrs.很好的一道STL题,本题核心练习了queue和deque的运用。首先,本题的输入就比较麻烦,带空格,选用cin.getline()读取整行,使用string流读取了操作数。储存方式最终选择用了两个向量,一个储存指令类型,一个储存指令对应的操作数(无操作数用-1填充),这两个向量都是从1开始储存,第0位保存当前并行程序运行位置(类似于IP寄存器)。过程模拟上没有太多问题,主...原创 2018-02-10 21:35:30 · 279 阅读 · 0 评论 -
Throwing cards away UVa10935
水题,输出的 remaining 巧妙地打错了导致wa。#include <iostream> #include <vector> using namespace std; vector<int> deck; int main() { int n; while (cin >> n && n) { ...原创 2018-02-10 21:34:51 · 212 阅读 · 0 评论 -
Ducci Sequence UVa1594
#include <iostream> #include <cmath> #include <map> #include <vector> using namespace std; vector<int> seq, seq2; map<vector<int>, int> check; int main() { i原创 2018-02-10 21:34:12 · 139 阅读 · 0 评论 -
Alignment of Code UVa1593
#include <iostream> #include <string> #include <sstream> #include <vector> using namespace std; vector<vector<string>> code; vector<string> line; int maxLen[2原创 2018-02-10 21:32:56 · 120 阅读 · 0 评论 -
Database UVa1592
本题很迷,并不知道错在哪,以下给出AC代码。去掉memset后wa,我写的输入数据库,使用getline()函数,并用‘,’作为分隔符,提交WA。不做以上修改仍然可过udebug,很迷,搞不懂。#include <iostream> #include <map> #include <vector> #include <string> #include...原创 2018-02-10 21:30:37 · 172 阅读 · 0 评论 -
The Setstack Computer UVa12096
本题的思想很重要,题意中的集合概念较抽象,因此对每种集合编号。stack为题意所描述的stack computer,存放着抽象集合对应的唯一编号,而编号所对应的集合里面也存放着集合的编号,形成了抽象集合的嵌套关系。函数getID(set<int>):set<int> ==> 编号,通过映射ID将每个集合对应唯一编号,以此保证集合元素的互异性,接口返回编号或者分配新的编...原创 2018-02-10 21:29:12 · 253 阅读 · 0 评论 -
Othello UVa220
Time: 3 hrs.这种棋啊什么玩意的题目是真的烦,情况没考虑好就要WA,而且对于我这种弱鸡代码写的非常冗余。本题输出有很多坑,uDebug调试AC后,竟然还是WA。无奈拿着这个代码自己和自己下黑白棋,最后无意间发现在边界的时候会有迷之吃子。虽然分析代码后,发现问题不大?还是最后加了宏is进行判断,终于AC。写的太丑了Orz。#include <cstdio> #include &...原创 2018-02-10 21:28:13 · 170 阅读 · 0 评论 -
Squares UVa201
Time: 45mins.#include <iostream> #include <cstring> using namespace std; int h[20][20] = { 0 }, v[20][20] = { 0 }, res[20] = { 0 }; int main() { int kase = 0, size, T; while (cin &...原创 2018-02-10 21:26:30 · 242 阅读 · 0 评论 -
Xiangqi UVa1589
Time: 3 hrs 20 mins一个把我搞得快崩溃的题,一开始没有把问题考虑好,采用边输入边检查攻击范围,没有考虑到后面的棋子。第二个问题,黑将可以吃子的问题,采用的解决方法是车和炮的攻击范围,从一开始会被棋子打断(该位置不在范围),到包括该位置,即假如黑将吃了这个棋子,那么就进入攻击范围。第三,忘记把红将也设置为红车进行判定,这才把所有情况考虑周到,但是又忘记删掉重定向,最后才AC。#in...原创 2018-02-10 21:24:38 · 265 阅读 · 0 评论 -
UVa818 Cutting Chains
使用迭代加深搜索,对剪断顶点个数为深度进行搜索,比用位运算暴力枚举全部子集要稍微快一点。注意题意的理解,每个顶点一条小圆环,打开小圆环时,其与其他所有边都断开了。题目要求为断开某些顶点后,任一顶点度数至多为2,图上没有环,断掉顶点个数必须大于等于除去断掉的顶点的图上联通块个数减一(使用断掉的顶点将所有联通块连成一条链)。AC代码:#include <iostream> #include...原创 2018-06-25 15:06:25 · 428 阅读 · 0 评论