Codeforces Round #723 (Div. 2)(ABCD)

A

题目大意:给2n个不重复的数,构造一种序列,使得ai不等于左右两边数的平均数

浅谈一下我的构造,排序后,两个小的夹一个大的,两个大的夹一个小的

 

B

题目大意:问一个数是否能由11,111,1111,11111……等数构成

比如33 = 11 + 11 + 111,144 = 111 + 11 + 11 + 11

(感觉这不是b题的难度啊555)

根据大佬的提示(noip2017小凯的疑惑),有数论:两个互质的数a,b,无法由他们构造出来的最大数为ab-a-b

放在这题,即111 * 11 - 11 -111 < 1111 ,即1111后面的数都可以由11和111构造出来

那问题就转化为11x + 111y = n是否有非负整数解

朴素做法是枚举y,x

看到大佬的解法,因为111 = 11 * 10 + 1,每十个11就允许多一个1,所以只要判n%11 <= n/11/10即可

 

CD

题目大意:n个药水,药水有增加hp或者减hp的功能,有正有负,每走到一瓶药水前可以选择拿还是不拿,在生命值始终不为负的情况下,问最多拿多少瓶子

思路:反悔贪心O(nlogn)

(误打误撞,因为不会dp只能用反悔贪心)

从左往右走,只要拿了之后生命值不为负就拿,把生命值为负的药水放进堆里维护负值最大的药水,如果拿了之后生命值为负,我们可以推断现在抉择的药水一定为负,我们考虑从堆顶替换,比如堆顶值为-4,当前生命值为0,抉择的药水值为-3,我们肯定把-4替换成-3,一换一,从而给后面留更多机会

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值