题面:https://codeforces.com/problemset/problem/1419/D2
我宣布一件事:我是傻逼!
大致题意:给定一个数列,若有一个数比左右相邻的数都小,则其对答案的贡献为1,允许随意重新排列,求最终答案的最大值
题解:易知,若最终答案为n,则存在至少n+1个值严格大于对答案有贡献的数(我们在这里取最小的n个值),故直接对数列进行排序即可
但是直接贪心排序后答案可能为错,应该找到最小的值比前一个MIN大且比后一个MIN大
我硬写了一个,ac了(大致思路是找出最可能出最优解的序列,再统计答案)
(代码比较丑,就当警示碑了bushi)
1 |
|
只要将n为偶数时,MAX的位置向后移一位,我原本的代码也ac了..
1 |
|