zoukankan      html  css  js  c++  java
  • URAL 2078~2089

    URAL 2078~2089

    A - Bowling game

    题目描述:给出保龄球每一局击倒的球数,按照保龄球的规则,算出总得分的最小值和最大值。

    solution
    首先是最小值:每一局第一球击倒(0)个,第二球击倒给定的数目,最后一局比较特殊,如果最后一局得分超过(20),最后一局只能是(10, 10, ?),否则第一球可以击倒(0)个。
    然后是最大值:每一局击倒给定的数目,最后一局的击球数往前靠。
    然后按规则算分即可。

    时间复杂度:(O(10))

    C - Wallet

    题目描述:有(n)张卡,放在一个栈里,现在给出用卡的顺序(一张卡有可能用多次),每次只能从栈顶拿卡出来用,一用就要用对,然后插回栈的某个位置,求栈的初始序列,以及每次用卡后插回哪里(往后退多少张)

    solution
    初始序列很好想,而往后退多少张等于相邻两个相同的数字中间有多少个不同的数字,将相邻两个相同的数字看成一个区间,然后用莫队即可。

    时间复杂度:(O(nsqrt{n}))

    D - Faulty dial

    题目描述:给出(n)个时间显示器,但这些时间是残缺的,输出一种方案,使得这些时间递减。

    时间复杂度:(O(60 imes 60 imes 4))

    H - Magic Programmer

    题目描述:给出一棵树,每一节点有一个集合,求树上一条链,满足链上的所有点的集合并起来是全集,而且每个数只出现一次,输出两端节点。

    solution
    (hash)。记录根到每个节点的集合元素个数总和以及每个元素的(hash)相加,将这个二元组看成(dis),则问题是求一条链的(dis=(全集元素个数,全集的hash)),两个点之间的(dis)相当于是两个点到根的(dis)-(LCA)到根的(dis)+(LCA),所以可以用类似(tarjan)(LCA)的方法查询答案。

    时间复杂度:(O(nlogn))

    I - Find Denis

    题目描述:给定三角形的一个顶点的坐标,该顶点相邻边的长度,对边的长度,对边线段上的一个点,求另一个指定顶点的坐标。

    solution
    高中数学。(A, B)是给定的点,求出图中的(u, theta),然后旋转放缩向量(BA)即可得到其它顶点的坐标。

    时间复杂度:(O(1))

    L - Experienced coach

    题目描述:给定一个(n)个点,(m)条边的图,每条边选一个端点,所有选的端点两两不同,求方案。

    solution
    相当于是每个点选一条边。
    一个个联通块处理。若联通块里的边多于点,则无解,否则联通块至多有一个环,所以每次删掉度数为(1)的点,最后会剩下环,然后绕着环分配即可。

    时间复杂度:(O(n))

  • 相关阅读:
    【转】Fiddler 教程
    【转】java中三个类别加载器的关系以及各自加载的类的范围
    【转】HTTP协议详解
    【转】Google是如何做代码审查的?
    JSP页面的三种include方式
    forward和sendRedirect的差别
    cxf方式实现WebService的简单实例
    Pushlet简单入门实例
    Java学习(二十三):log4j日志打印
    PL/SQL相关问题解决办法汇总
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/9486328.html
Copyright © 2011-2022 走看看