zoukankan      html  css  js  c++  java
  • UVA题解三

    UVA题解三

    UVA 127

    题目描述(52)张扑克牌排成一列,如果一张牌的花色或者数字与左边第一列的最上面的牌相同,则将这张牌移到左边第一列的最上面,如果一张牌的花色或者数字与左边第三列的最上面的牌相同,则将这张牌移到左边第三列的最上面。只有最上面的牌可以移动,如果同时有多张牌可以移动,则先移动最左边的牌,若某张牌可以移到左边第三列的上面,则优先移到左边第三列。若某个时刻某一列为空,则那一列后面的列往前移动。求最后还剩多少列,以及每一列有多少张牌。

    solution
    直接栈模拟。因为每张牌最多前进(52)次,乘上每次查找哪一张牌可以移动,所以时间复杂度是三次方的。
    时间复杂度:(O(n^3))

    UVA 128

    题目描述:输入一个字符串,将每个字符转化为对应的ASCII码的八位二进制数,按顺序串成一个超长的二进制数,现在要在这个超长二进制数后面加上一个十六位的二进制数,使得最终的二进制数能被(34943)整除。求出这个十六位二进制,输出对应的十六进制。

    solution
    将那个超长二进制数对(34943)取模,然后(34943)与余数的差就是答案,注意(0)的情况。
    时间复杂度:(O(字符串长度))

    UVA 133

    题目描述(n)个人围成一圈,顺时针从(1)(n)编号,某个面试官从(1)开始顺时针数数,数到(k)的倍数的人出局,同时另一个面试官从(n)开始逆时针数数,数到(m)的倍数的人出局。如果数到同一个人,则只有那个人出局。直到最后一个人出局为止。输出每一轮出局的人。

    solution
    简单模拟,可以用双向链表优化,但数据比较小,可以不优化
    时间复杂度:(O(n^3))(O(n^2))

    UVA 136

    题目描述:将质因子只有(2, 3, 5)的数从小到大排序,第一个数是(1),然后才是(2),输出第(1500)个数

    solution
    打表。(20)秒出结果。

    UVA 138

    题目描述:若一个数(n),存在一个数(m),使得(1)(m)的和等于(m)(n)的和,那么称(n)为神奇的数,输出前十个神奇的数以及他们对应的(m)

    solution
    打表。这里有一个技巧,就是n不断递增的同时,m也是递增的,所以可以双指针移动。2秒出结果。可以直接交这个程序,不打表。

    UVA 143

    题目描述:平面上给出一个三角形,问三角形里有多少个点。

    solution
    因为数据比较小,所以可以枚举点,然后判断点是否在三角形内,可以用等面积法,也可以用射线法。也可以进行优化,只枚举(x)坐标,然后算出(y)的范围。要注意的是这个三角形可能会退化为一条直线,所以枚举的点只能在三角形的特征矩形(能围住三角形内所有点的,边平行于坐标轴的最小矩形)里。
    时间复杂度:(O(询问次数*坐标范围))

    UVA 146

    题目描述:规定了每个小写字母出现的次数,可以生成很多个字符串,将这些字符串按字典序排序,先给出一个字符串,问这个字符串的后继,若无,则输出No
    Successor

    solution
    用笔模拟一些构造的过程,容易得出结论:从右往左找到第一个比右边字母要小的位置,然后在它的右边找到比它大的最小的字母替换它,最后将该位置右边的字母从小到大排序,得到的字符串就是后继。若找不到这个位置,则无解。
    时间复杂度:(O(26*字符串长度))

    UVA 147

    题目描述:给出一种货币的所有面值((m)种),给出一个数((n)),用这种货币来表示这个数,输出方案数。

    solution
    完全背包。
    时间复杂度:(O(nm))

    UVA 151

    题目描述:有(n)座城市,求一个最小的(m),使得从(1)开始数,然后往后数(m),循环数,最后一个数的数是(13)

    solution
    穷举(m),模拟,类似于UVA 133,如果最后一个数是(13),则输出。
    时间复杂度:(O(m^2n^2))(O(m^2n))

    UVA 156

    题目描述:给出(n)个单词,找出哪些单词不能由其它单词重新排列得到。

    solution
    先记录每个单词的每个字母出现次数,两两枚举,若两个单词的每个字母的出现次数都相同,则这两个单词可以通过重新排列得到。
    时间复杂度:(O(26n^2))

  • 相关阅读:
    win10和Ubuntu双系统安装过程中遇到的问题
    python中矩阵的用法
    python中yield的用法
    python中的*和**的用途
    python函数后面有多个括号怎么理解?
    keras中的重要函数
    机器学习的常见算法
    agent page
    Spring常用注解介绍【经典总结】
    Spring配置中<context:annotation-config> VS <context:component-scan>
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/7675425.html
Copyright © 2011-2022 走看看