HydroOJ 每日一题 #001

HydroOJ 每日一题 #001

简介

HydroOJ 每日将从 HydroOJ 主题库及各大域中选出一题附以详解在此处分享给各位用户。


本期题目(2021.9.3)

[COCI2018-2019 Final T4] TENIS

题目描述

Vito 十分喜欢打网球。不久,他就会组织一次大规模的锦标赛。这次锦标赛会有 n n n 名选手参加,编号为从 1 1 1 n n n。Vito 在过去几年跟踪了这些选手的数据。因此,他确定了这些选手在三种不同的球场:红土,草地和硬地上比赛的能力值。也就是说,对于每种场地,他都按最强到最弱的顺序确定了选手的排名。

Vito 的锦标赛赛制有点与众不同。一共会进行 n − 1 n-1 n1 轮比赛。在每场比赛中,还没有被淘汰的两名选手会在某种特定的场地上进行比赛。在这种场地上较弱的选手会被淘汰出局。 n − 1 n-1 n1 轮比赛后唯一的胜者就是这次锦标赛的冠军。

Vito 是一个很有影响力的人,可以操纵比赛的结果。即对于每场比赛,Vito 可以选择参赛选手和比赛场地。当然,他只能选择未被淘汰的选手。

Vito 经常更新他收集的数据,他有时会交换在某种场地上两名选手的排名。并且他有很多朋友,有些朋友会问他:“选手 x x x 是我的外甥,他有机会夺冠吗?”,为了回答这些询问,你需要写一个程序帮助 Vito 更新排名,并根据当前时刻 Vito 的排名表回答他朋友的提问。

题解

思维题。

拿到题目首先观察样例。

4 4
1 2 3 4
2 1 3 4
2 4 3 1
1 1
1 4
2 3 1 4
1 4

针对第二个事件,我们发现,虽然在前两个场地 4 4 4 都是最弱的,但是在第三个场地 4 4 4 能打赢 1 1 1 3 3 3,而在第一个场地 1 1 1 又能打赢 2 2 2。因此只需让能被选手 4 4 4 打败的人先去打选手 4 4 4 打不过的人,选手 4 4 4 才有可能获得胜利。

将以上策略抽象成图,将每一个人视为一个结点,向每个他能打败的人(不管在哪个场地)都连一条边,那么询问就是看从这个人的结点出发,能否遍历其他所有结点。如下图:

hyhUZq.png

(此处 1.1 , 1.2 , 1.3 1.1,1.2,1.3 1.1,1.2,1.3 为选手 1 1 1 在三个场地的排名,在这种方法中可缩为一个点)

这时处理询问的复杂度为 O ( n ) \mathcal{O}(n) O(n),总时间复杂度为 O ( n × Q ) \mathcal{O}(n\times Q) O(n×Q),期望得分 30 30 30 分。

我们发现问题的瓶颈在于处理询问,而上述处理方法基于连向其他结点的边。为方便观察,先将这些边删去。我们来随手搓一组。

5 0
1 2 4 3 5
2 1 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值