码迷,mamicode.com
首页 > 其他好文 > 详细

URAL 2078~2089

时间:2018-08-16 13:38:16      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:比较   tarjan   ram   ash   集合   一个   alt   magic   不同的   

URAL 2078~2089

A - Bowling game

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

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

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

C - Wallet

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

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

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

D - Faulty dial

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

时间复杂度:\(O(60 \times 60 \times 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)\)

URAL 2078~2089

标签:比较   tarjan   ram   ash   集合   一个   alt   magic   不同的   

原文地址:https://www.cnblogs.com/GerynOhenz/p/9486328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!