UVA题解二

UVA题解二

UVA 110

题目描述:输出一个Pascal程序,该程序能读入不多于\(8\)个数,并输出从小到大排好序后的数。注意:该程序只能用读入语句,输出语句,if语句。

solution
模仿某一种排序算法(例如插入排序),递归输出答案。
时间复杂度:\(O(n!)\)

UVA 111

题目描述:求两个数组的最长公共子串。

solution
DP
时间复杂度:\(O(n^2)\)

UVA 112

题目描述:给出一棵树,判断是否存在一条从根到叶子节点的路径,路径上所有节点的权值和等于给定的数。

solution
递归。
时间复杂度:\(O(n)\)

UVA 113

题目描述:求一个数的\(n\)次方根。

solution
二分答案+高精度乘法
时间复杂度:\(O(nlogn)\)

UVA 116

题目描述:给出一个\(n*m\)的网格图,每个格子有一个数,现在从第一列的某个格子走到最后一列的某个格子,每次移动只能移动到右边一列的有公共点的三个格子(第一行与最后一行看作相邻),问经过的格子的数的和的最小值以及方案。

solution
记忆化搜索,注意状态转移的顺序。
时间复杂度:\(O(nm)\)

UVA 118

题目描述:在平面上划定一个边与坐标轴平行的矩形区域,有机器人会在里面轮流移动(一个机器人的命令全部结束再到另一个机器人),给定机器人的初始坐标(在矩形内),初始方向,以及命令(左转,右转,往前走一个单位),如果机器人走出了矩形,那它就永远消失,并在它走出矩形的那个点做上标记,以后的机器人来到了同一个地方时,如果命令会使它走出矩形,则无视该命令。输出所有机器人在矩形内的最终位置。(机器人完成它的所有命令后也会消失)

solution
模拟
时间复杂度:\(O(nm)\)

UVA 119

题目描述:给出一棵树,问这棵树是否完整。

solution
搜索
时间复杂度:\(O(n)\)

UVA 120

题目描述:给出一个栈,将这个栈里的元素从小到大排序(小的在栈顶),每次操作只能选择一个位置,然后将该位置到栈顶的元素翻转(位置翻转),输出一种可行的方案。

solution
构造。如果最大的不在栈底,则先将它翻转到栈顶,然后翻转到栈底,反复这样操作,直到排好序。
时间复杂度:\(O(n^2)\)

UVA 122

题目描述:给出一棵树,从上到下输出每一层的数(从左到右)

solution
BFS
时间复杂度:\(O(n)\)

UVA 123

题目描述:给出一些单词(忽略单词),然后给出一些句子,除忽略单词外,句子中的其它单词都可以看作关键词,按句子关键词的个数(\(m\))(同一个关键词出现多次算多个)将该句子复制\(m\)次,每个关键词对应一个句子(该句子中关键词大写,其它小写),然后按照关键词的字典序将所有句子排序(关键词相同则先输入的句子排前面,所在句子也相同则先在句子中出现的排前面),按序输出所有句子。

solution
multimap+set
时间复杂度:\(O(nmlog(nm))\)

posted @ 2017-10-08 09:03  GerynOhenz  阅读(251)  评论(0编辑  收藏  举报