Educational Codeforces Round 169(A-D)

A. Closest Point

        给你一组点。你必须在这个集合中加入一个整数的点,使它与集合中现有的每一个点不同,并且它成为与集合中每一个点**最近的点。这可能吗?(输入yes or no)

        一道思路题,简单思考可以发现,如果数字超过两个,那么这题答案就是NO。当两个数字的时候,也要考虑中间有没有一个不同的数。

B. Game with Doors

题目描述

        有 100个房间排成一排,它们之间有 99扇门; i扇门连接着 i和 i+1 两个房间。每扇门既可以上锁,也可以不上锁。最初,所有的门都没有上锁。

        如果房间 x 和房间 y 之间的所有门都没有上锁,我们就说房间 x可以从房间 y到达。

  • 爱丽丝在 [l,r][l,r] 段的某个房间里;
  • 鲍勃位于线段 [L,R][L,R] 中的某个房间;
  • 爱丽丝和鲍勃在不同的房间。

        但是,你不知道他们具体在哪个房间。

        你不想让爱丽丝和鲍勃接触到对方,所以你要锁上一些门来防止他们接触到对方。无论爱丽丝和鲍勃在给定段落中的起始位置如何,要使他们不能相遇,你必须锁上的门的最小数目是多少?

思路分析

        一道模拟题,可以通过分类查看所有可能的情况。分类完之后,这道题就很简单了。

C. Splitting Items

题目描述

        爱丽丝和鲍勃有 n件物品想平分,于是他们决定玩一个游戏。所有物品都有成本, i /th物品的成本是 ai 。玩家从爱丽丝开始轮流移动。

        在每个回合中,玩家从剩下的物品中选择一个并拿走。游戏一直进行到没有物品为止。

        假设 A是爱丽丝拿走物品的总成本, B 是鲍勃拿走物品的总成本。这样,游戏的得分就等于 A−B。

        爱丽丝希望分数最大化,而鲍勃希望分数最小化。爱丽丝和鲍勃都将以最优方式进行博弈。

        但游戏将在明天进行,所以今天鲍勃可以稍微修改一下成本。他可以将几个(可能一个也没有,也可能全部)项目的成本 ai 增加一个整数值(可能每个项目增加相同的值,也可能增加不同的值)。但是,增加的总金额必须小于或等于 k。否则,爱丽丝可能会怀疑。请注意,鲍勃不能减少成本,只能增加成本。

        鲍勃可能获得的最低分数是多少?

分析

        最优方式的博弈就是每次两个人都选择剩下物品中,最贵的一个。所以物品两个一组,每组的价格差就是这一组的得分。为了使得分数差最小,bob需要把一组内的差尽可能减小。所以只要统计每一组的得分差(去掉可能爱丽丝拿了bob没拿的最后一组)。让这个分差减掉k并且与0取最大值即可。

D. Colored Portals

题目描述

        在一条直线上有 n 座城市。这些城市的编号从 1到 n。

        传送门用于在城市之间移动。传送门有 4 种颜色:蓝色、绿色、红色和黄色。每个城市都有两种不同颜色的传送门。如果城市 i 和城市 j 的传送门颜色相同,则可以在这两个城市之间移动(例如,可以在 "蓝-红 "城市和 "蓝-绿 "城市之间移动)。这种移动需要花费 |i−j| 枚金币。

        你的任务是回答 q个独立的问题:计算从城市 x 移动到城市 y 的最小成本。

分析

        先从问题规模看起,n^2明显超时,所以不可能利用图论中的dijistla定理等做题。

        还是先从假设距离开始思考做题,很简单就可以发现,大部分的组合都是可以直接传送的,每个城市只有一个组合是不能直接传送到达的。但是,假若有一个中转站,那么就可以直接到达。并且简单分析可以得到,这个中转站一定是6组传送门中,和x,y城市都不相同的传送门。

        如果这个中转站在x,y之间。那么结果还是y-x

        否则,我们就要比对x左边和y右边的城市中哪个中转站最近。这是一个查找问题;

但是分析可以发现,最坏的情况下,直接挨个查找会超时了,那么这时候就要使用二分查找。但是直接二分查找肯定是不行的。传送门元素是不可以二分的,那么这时候就要换个角度来思考了,能二分的只可能是城市位置,所以不能简单的就这样存储传送门,应该是每个传送门的城市编号存储起来。这样就能够得到一个可以二分位置查找的数组(6个)。

反思

        1.从问题规模可以排除一些错误思路

        2.二分查找时,如果发现元素是不能二分的,那么要考虑重新处理元素的记录方式,使其能够二分。

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值