自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 uva10562 Undraw the Trees (不定叉树重建)

题意:根据给定的图树, 输出对应的括号树。树的结点可以是任意可打印的字符, 不包括'|' 、'-'、 '#' '、 ' '\0'、 '\n'。 对于\n 其实我是看别人题解的。那句英语折磨死我了。思路:关键在于递归建树。用二维char数组一次性读掉整张图。因为是不定叉, 所以用vector保存孩子结点。具体如下: 特殊处理第一行(可能为空树), 找到根结点的坐标开始递归。 对于每一

2013-07-27 16:23:45 1028

原创 uva839 Not so Mobile (重建二叉树)

题意:天平的平衡条件 Wl * Dl == Wr * Dr。 题目给出的是 二叉树天平, 平衡条件是所有天平都要平衡。 大天平的W 是小天平两边的W总和(很明显嘛~ 不行你就受力分析下啊)。思路:好了, 这题就无法逃脱建树的命运了。 递归建树, 然后递归判断是否平衡。每次读入一行, 如果Wl == 0, 则递归建左子树, 如果Wr == 0, 则递归建右子树。  判断的时候, 如果Wl

2013-07-27 16:06:44 1658

原创 uva712 S-Tree (假二叉树重建)

题意:给定x1 x2 x3 x4......的0 1指派, 根据这些指派得出值真假。怎么得出? x1 ~xn的顺序就是它的深度(看图), 如果是0 往左边走, 1往右边走。 走n步,走到叶子, 叶子是1则真, 是0则假。思路: 这道题虽然是数据结构题, 但其实用不到树。我们可以根据x1~xn的序列根据它的指派生成它的十进制值index。 然后输出terminal[index]就行了。(

2013-07-26 21:48:19 1008

原创 uva297 Quadtrees (树的重建)

题意:一幅图有1024个点, 可以对图平均分成4块, 并且子图也可以再往下分, 直到一个子图表示一个点。 f表示这块子图填满, p表示它还有4个子图, e表示没有子图(当然啦, 它也没有填满)。 给定两个字符串(其实就是两幅图, 两棵树), 求把两图合并后的图的黑点数。思路:可以根据两字符串建两棵树, 然后合并。 但是直接用字符串合并似乎会更简单。从头到尾逐个字符比较两个字符串, 如果

2013-07-26 21:34:03 1964

原创 uva112 Tree Summing(二叉树 + 栈)

题意:LISP 列表语言实现二叉树, 构树方式对照图就可知道,  叶子后面都有两个()。 给定一个数target, 求此树中是否有一条路径(从root到叶子), 它上面的结点总和等于target, 如果存在 输出yes, 否则输出no。思路:这道题可以不用建树。只要读到叶子结点的时候, 把这条路的sum 跟 target比较, 相等就ok = true。 如何读? 读到( 入栈staS

2013-07-26 21:20:26 1068

原创 uva540 Team Queue(模拟:队列)

题意:有n个队伍。 对于每个ENQUEUE  x 命令。 如果x所在的队伍已经在队列中, 则x排在队列中它的队伍的尾巴, 否则排在队列的末尾。 可以理解为队列中的队列的味道。思路:用一个team[]数组, 来标记所有数字所在的队列。 queue que[1000], 由于组数最多有1000组, 也就是最多有1000个子队列, 如果你在第0组, 把你放到大队列中, 只要把你放到que[0

2013-07-25 19:41:21 3416

原创 uva673 Parentheses Balance(模拟+栈)

题意:判断给定的括号是否匹配平衡。思路:用栈来模拟 遇到'(' 或'['的时候入栈, 遇到 ')'或']'跟栈定匹配。匹配成功则栈顶出栈。 最后栈空则括号平衡。陷阱: 小心))))))))))】】】】】】】】括号组算法复杂度: 有几个符号就要入栈、匹配几次, 所以是o(N)思路:#include #include using namespace std;

2013-07-25 19:13:27 2615

原创 uva11111 Generalized Matrioshkas (模拟 + 栈)

题意:类似于括号匹配, 不过每个数字只能跟自己的相反数匹配。并且, 括号的所有直接子括号的数值之和必须小于它的数值。思路:用栈模拟, 遇到负数入栈; 正数则与栈顶匹配, 若匹配成功则消去栈顶 , 否则也入栈。栈的元素是结构体, 除了上面的括号自身的数值value外, 还有所有直接子括号的和sum。 在负数入栈前, 要把它的数值加到栈顶(如果empty就不用)的sum, 并判断, 判断完

2013-07-25 17:16:22 1002

原创 uva400 unix ls (字符串 排序)

题意: 模仿 unix的ls命令。 对输入的文件名进行字典序排序, 然后按列优先输出。 除了最后一列, 每列的宽度是所有文件名中最长的那个字符数 + 2。思路: 用sort()函数(要把字符串封装进结构体里面, 或者用string)把 文件名排序下就行了。 然后根据maxLen 去确定colNum, 根据这个条件:每行最多60个字符。算法复杂度: o(n)#includ

2013-07-20 20:05:18 796

原创 uva784 Exponentiation (实数高精度乘方)

题意: 没什么好说的。 就是求实数的乘法。  注意点是: 输入的小数有后导零。 如最后一组1.0100  12 。 在输入的时候要判断。思路: 记录小数位, 结果的小数位等于 一开始的小数位 * R。  用strchr()锁定小数点, 去掉小数点, 当整数去乘方。第二次做这道题, 思路 条理都清楚了很多。#include #include using namespa

2013-07-20 19:35:46 916

原创 NBUT 1114 Alice's Puppets

题意: 爱丽丝能够控制木偶, 并且还能通过木偶控制其它木偶。如果木偶直接由爱丽丝控制, 则它的level = 1, 如果木偶是由爱丽丝直接控制的木偶所控制的 则它的level =2, 以此类推。 输入的一行 前一个名字表示被控制的木偶, 后一个名字表示控制者。 控制者一定会在被控制者之前出现。  输出所有的木偶 以及木偶的level, 按level从小到大排序, 若level一样, 则按字典序排序

2013-07-18 00:04:04 723

原创 uva11292 The Dragon of Loowater (排序+贪心)

题意: 国王要杀恶龙, 需要雇佣骑士。 每个骑士只能杀一条龙。 当骑士身高 不小于 龙头时, 骑士可以砍下龙头。 雇佣骑士需要钱, 钱就等于他的身高。 如果骑士能成功砍下所有的龙头, 则输出雇佣总费最少的数值, 否则输出那句鸟语。思路: 排序+贪心。 先把龙头跟骑士身高各自从小到大排序, 然后从头到尾比较。 若能砍下则雇佣, 否则用下一个骑士。 直到龙头砍完, 或者骑士用完。

2013-07-17 23:06:47 1392

原创 uva439 Knight Moves (搜索 BFS, BFS启蒙题)

题意:HDU1372思路:HDU1372算法复杂度: 棋盘是固定的8*8 所有复杂度是常复杂度o(1)。 (不知道这样算对不对, 刚学。 还望大牛指点)代码:(比赛的时候的代码, 说真的 很挫, 不过现在太累。先mark再重写)#include #include #include using namespace std;#define MAX_ROW 8#define

2013-07-17 21:43:37 1153

原创 uva10054 The Necklace (欧拉回路路径输出 (并查集 + DFS) || (DFS + stack))

题意: 用50种珠子, 每种珠子两头颜色不同, 当两个珠子的有一头颜色相同时, 这一头可以连起来。 给点一些珠子, 看能否连成项链。思路:其实就是欧拉回路(项链)。 用并查集判断图的连通性 + 判断度数合法性, 图就存在。 然后用DFS输出路径。算法复杂度:代码:#include #include using namespace std;#define MA

2013-07-16 19:09:18 1279

原创 uva10129 Play On words (有向欧拉道路存在性)

题意:判断能不能把所有单词首尾相连。 能单词相连的部分字母必须相同思路:其实就是判断欧拉道路的存在性。 每个单词只取首位, 不用保存。  刚看题目以为是拓扑排序。 有点混乱了。   方法一:用并查集判断图的连通性(判断连通性需要把有向图当做无向图来看!)   方法二:用DFS来判断图的连通性。   以上两种方法都要判断度数的合法性: 即 所有vertex 的 in-deg == o

2013-07-16 18:54:42 3157

原创 uva10252 Common Permutation

题意:找出字符串x, x的某个排序是strA的子串, x的某个排序是strB的子串。思路:方法多种。1. 统计。用两个26的数组分别保存A B串中出现的字母的频数, 输出时, 从a开始输出, 每次输出min(letterA[i], letterB[i])个字母。  2.对两个字符串排序, 然后从头到尾输出一样的字母, 考虑个数。  3.找出有一样的字母(考虑个数), 然后对这些字母

2013-07-16 17:16:27 1109

原创 uva11234 Expression (二叉树重建+层次遍历)

题意:具体没理解。我知道我这样回答很坑。 根据后缀表达式重建树, 然后输出层次遍历的逆序。  思路: 如何建树?从左往右读入字符, 遇到小写字符建一个结点压入栈中, 遇到一个大写字母建一个结点, 其左右子树便是栈顶的前两个, 构成的新树再压入栈中。 最后只剩一棵树。 然后对这棵树层次遍历(BFS), 输出层次遍历的逆序。算法复杂度: 缺。代码:/*建树*/#i

2013-07-16 17:00:01 881

原创 uva327 Evaluating Simple C Expressions (搓代码)

题意:给一个表达式(一行一个), 字母(每个字母出现一次)对应变量(变量初值a = 1, b =2 ...z = 26)。 计算表达式的值, 及各个变量的值。思路: 刘汝佳说 这属于树的题目。 其实, 直接模拟就行了。 我的思路是, 用一个栈保存符号, 一个变量 表示目前的计算变量。  遇到符号压栈, 遇到变量时: 1.若栈中只有一个符号, 则跟总数count做运行, 符号出栈。     

2013-07-16 16:51:18 1118

原创 STL 优先队列 简明使用

定义: 每次top()出来的, 都是队列中优先级最高的。但, 注意, 队列中个元素的相对位置不变。头文件: 声明方式: priority_queue Name;注: type 可以是任意类型, 但是非内置类型需要自己写辅助比较函数(重载不行。)建议用重载接口:top ()  push ()  pop ()  size()  empty()样例:u

2013-07-16 16:24:14 881

原创 uva12100 Printer Queue (队列模拟, 据说是优先队列,错了)

题意:给你打印任务的数量, 目标打印任务的序号, 目前的打印队列。  如果队头是目前最重要的任务, 则打印, 否则放回队尾。 问, 目标打印任务是第几个打印的。思路:用队列模拟打印任务队列, 每个元素是带有{int 重要性、bool 是否是目标打印任务}的结构体。然后按照题意去模拟便是。 关键在于如何判断队头任务 是目前最重要的任务。 只要在输入的时候把重要性另存在一个max[]数组里,

2013-07-16 16:12:35 2375 2

原创 欧拉回路总结

欧拉回路让我甚是苦恼, 估计是这两天玩游戏浮躁了自己, 在理解算法的时候就没认真。 没有完全理解就上战场了, 结果各种RE+WA。下面是我对欧拉回路的理解。1.基本概念: 欧拉道路 与 欧拉回路(区别在于一个‘回’字, 不再诉述, 自己搜索)2.判断方法: 图是否连通(用并查集实现)+ 点的度数是否满足条件(全为偶数, 或只有两个奇数)3.输出路径: 用一个DFS压栈, 然后从栈中

2013-07-13 19:57:15 1024

原创 uva10152

题意:给出两个字符串序列, 一个是现有序列, 一个是目标序列。 在现有序列中只有这样的操作:把这个字符串置顶。 求从现有序列变换到目标序列的最快的变换方式, 按顺序   输出要置顶的字符串。思路:从目标序列的底部往上与现有序列匹配, 匹配方式是若现有序列的字符串与之不相等则跳过, 直到找到与之相等的, 当现有序列匹配完后。目标序列为匹配的就是要置顶    的字符。 因为是置顶, 所以顺

2013-07-07 23:21:07 1130 1

原创 uva442 栈

题意:给出矩阵规格, 然后给出矩阵算式, 求每个算式的计算量。当矩阵无法相乘时 输出error思路:1.计算量的计算方式 (A.r, A.c) * (B.r, B.c) 的计算量是 A.r * A.c * B.c()    2.关键: 用栈在储存矩阵。 遇到 '(' 时读掉, 遇到字母时压栈, 遇到')'时计算栈的顶部两个矩阵, 形成行矩阵压入栈中。    3.用数组保存读入的矩阵,

2013-07-07 23:00:00 1653

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除