CODE : https://www.luogu.com.cn/record/160374164
代码比较抽象,细节为了省事用了各种神秘的实现,望原谅。
这份代码是 nlog2n 的,将 sort 更换为桶排序即可做到 nlogn 。
具体实现:
考虑最后答案一定是若干 9 在头,后面接一串未知的数,我们直接二分前面 9 的数量,可以发现:转化为判别性问题后,所有位置是等价的,故先给更小的数上 2 操作,然后再给剩余的数上 1 操作这一贪心策略具有了正确性。
然后看后面的部分,容易发现下一位一定不是 9 (已经找到了最长),所以下一位一定不用 2 操作,而是用 1 操作;同时 1 操作不可能使这一位超过 9 ,直接加,同时我们用完了所有的 1 操作,剩余位置,用剩余的 2 操作直接尽可能的把高位变 9 即可实现。
另外吐槽一句,数据过于水了,以至于一种错误的贪心 做法 通过,建议加强数据。