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,一换一,从而给后面留更多机会