UVa 11078 Open Credit System

题意

给出一个整数组成的序列,求两个整数A和B,其中A在数列的位置在B前面,令A-B最大,输出这个最大值。

思路

利用问题的单调性优化的典型例子。

暴力是O(n^2)的,显然无法通过。注意到A始终在B的前面,而且一定是A-B,也就是说对于每一个B,只要找到在它前面最大的A就可以了,不妨考虑随着B逐渐后移的同时,维护前面A的最大值,这样做的复杂度是O(n)的,很完美地解决了这个问题。

这种思想经常会被用在其他问题中作为一个需要优化的环节。

代码

 

 

Leave a Reply

Scroll to top