题解 UVA11078 【Open Credit System】

蓝书上的题目的好多题解都是照搬啊,希望各位注明下出处吧。。。

这道题蓝书上给的O(n)解法大概是这样的,大概就是维护一个maxx表示i<ja[i]的最大值,然后不断更新它的最大值和答案的最大值即可。


但是!——在最后蓝书上还布置了个作业,写个边读入边处理的解法。现在就来讲下这个解法。

O(n)解法中,我们发现,这个maxx的值是不会被j个数之后的数改变的,所以根本不需要读入后再处理,直接在读入第j个数时把maxx更新一下就行了,然后同样更新下答案的最大值。

CODE:

#include <cstdio> #define inf 0x7fffffff #define max(a,b) (a)>(b)?(a):(b) inline void read(int &x) { x=0;char ch=0;bool sign=false; while(ch < '0' || ch > '9') { sign|=(ch == '-'); ch=getchar(); } while(!(ch < '0' || ch > '9')) { x=x*10+(ch^48); ch=getchar(); } x=sign ? -x : x; } inline void print(int x) { if(x<0)putchar('-'),x=-x; if(x>9)print(x/10); putchar(x%10+'0'); } int n,a[10000100]; int ans,maxx; int main() { int T; read(T); for(int kase=1; kase<=T; kase++) { ans=-inf,maxx=-inf/3; read(n); for(int i=1; i<=n; i++) { read(a[i]); ans=max(ans,maxx-a[i]); maxx=max(a[i],maxx); } print(ans); putchar('\n'); } return 0; }

__EOF__

本文作者Kdlyh
本文链接https://www.cnblogs.com/kdlyh/p/17777024.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   加固文明幻景  阅读(12)  评论(4编辑  收藏  举报  
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示