Intel Code Challenge Elimination Round (Div.1 + Div.2, combined)

C - Destroying Array

题意:给出长度为n的数组中,再给出n个消灭数组某个位置上元素的顺序.问每次消完之后在数组中连续的元素之和的最大值.

思路:倒着来做,设初始数组上的元素全部为0,再根据给出的消灭顺序从后往前填上元素.
1.若该位置的左边和右边都已经被访问(即在这个位置消去之后再消去)
也就是说他们是连续着的元素,可以用并查集将他们联通,并将数组上的元素相加.
2.每次这样做完之后,与之前已经连续的元素之和作比较,取最大值.

This Code

D. Generating Sets

题意:找到一个数组X,使得X中的元素可以经过以下两个操作:
1. xi=2xi
2. xi=2xi+1
得到给出的数组Y,并且要求数组X中的最大值尽可能的小.

思路:这两个操作说明数组Y中的元素可以任意的除2得到数组X.
只要将数组Y中的最大元素值除2.
若除2后的值在数组Y中未出现,那么保存;反之就继续将该元素除2,直至未出现,或者除完2变为0了,那么就找到了数组X.

优先队列+set

This Code

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值