一开始的想法是n^2时间暴力枚举片段的开头和结尾,但是时间肯定不行。所以干脆想办法缩减时间,用个priority_queue呀,甚至尝试着动态规划。但是很显然无论如何这种东西没法dp,完全没有状态转移方程。。。
想了一天,不得已之下看了题解,发现我就是个**
换个想法,这个beauty的最大值不过是全序列中的两个最大值之和再减去两个最小值。而这道题关键在于只需要求出这个最大的“漂亮值”就行了。所以我才不用管你的序列是什么,我只需要关心你的这个理论最大“漂亮值”到底能不能取到就行了。
简单想一想就知道这个肯定是可以取到的。两个最大值和两个最小值的相对位置无非就那么几种,只需要合适选取片段的头和尾就可以做到片段恰好包含一个最大值和一个最小值。
其实只要仔细观察一下样例也能得出这个结论了,但是我根本就没瞅样例一眼。。。
可能不那么正确经验总结
- 总之要先从需求入手:人家没让你求片段在哪里,就不要去枚举片段的头和尾了。针对需求设计算法。
- 一定要看样例!一定要看样例!一定要看样例!不只是看,还要仔细观察!
- 对于这种求最大值的,可以先想一想它的理论最大值是什么。如果不是像这道题一样直接能构造出最大值的话,至少还可以考虑折半查找啥的,大概。
话说这道题不应该再加个"constructive algorithm"的tag吗!!!
标签:片段,Interesting,Sum,codeforces,最小值,这道题,看样,最大值 From: https://www.cnblogs.com/salty-pretzel001/p/16629579.html