UVA 11078 - Open Credit System
2014-04-18 10:43
435 查看
这道题用两重循环很明显会超时,所以需要做优化,我用的方法是从数组的最后一位开始到第1位(下标从0开始),找到当前的最小的J值,然后把这个最小的值保存到一个数组里,然后再从第0位到N-2位找I的值,只要和第I位的后一位所保存的最小值的数组一减就可以,时间是O(n),但是保存最小值需要空间。
#include <cstdio> #include <algorithm> using namespace std; int a[1000005]; int minj[1000005]; int main(){ int i,j; int T; scanf("%d",&T); while(T--){ int n; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } int minn=200000000; for(i=n-1;i>=1;i--){ if(a[i]<minn) minn=a[i]; minj[i]=minn; } int maxn=-20000000; for(i=0;i<n-1;i++){ if(maxn<(a[i]-minj[i+1])) maxn=a[i]-minj[i+1]; } printf("%d\n",maxn); } return 0; }
相关文章推荐
- uva11078 Open Credit System
- UVA - 11078 Open Credit System 推理
- 【UVA 11078】BUPT 2015 newbie practice #2 div2-A -Open Credit System
- UVA 11078 Open Credit System(扫描 维护最大值)
- UVa 11078 - Open Credit System
- Open Credit System UVa 11078
- Open Credit System UVA - 11078
- uva 11078 - Open Credit System(水题)
- UVA 11078 Open Credit System(空间优化+时间优化)
- Open Credit System(UVA11078)
- UVA 11078 - Open Credit System
- UVa 11078 Open Credit System
- uva 11078 Open Credit System
- UVA 11078 Open Credit System
- UVA 11078 Open Credit System
- UVa 11078 - Open Credit System
- Uva-11078-Open Credit System
- UVa11078 - Open Credit System
- UVA-11078 Open Credit System
- UVA 11078 - Open Credit System(单调队列)