Uva----------(11078)Open Credit System
Open Credit System
Input:Standard Input
Output: Standard Output
In an open credit system, the students can choose any course they like, but there is a problem.
Some of the students are more senior than other students. The professor of such a course has found quite a number of such students who
came from senior classes (as if they came to attend the pre requisite course after passing an advanced course).
But he wants to do justice to the new students. So, he is going to take a placement test (basically an IQ test) to assess
the level of difference among the students. He wants to know the maximum amount of score that a senior student gets more than
any junior student. For example, if a senior student gets 80 and a junior student gets 70,
then this amount is 10. Be careful that we don't want the absolute value. Help the professor to figure out a solution.
Input Input consists of a number of test cases T (less than 20). Each case starts with an integer n which is the number of students in the course.
This value can be as large as 100,000 and as low as 2. Next n lines contain n integers where the i'th integer is the score of the i'thstudent.
All these integers have absolute values less than 150000. If i < j, then i'thstudent is senior to the j'th student.
Output For each test case,
output the desired number in a new line. Follow the format shown in sample input-output section.
Sample Input
Output for Sample Input
|
3 2 100 20 4 4 3 2 1 4 1 2 3 4 |
80 3 -1 |
这道题,就是给出一系列的有序的数,比如a[0] a[1],a[2],a[3].....a[i]....a[n]. 要你求出a[i]-a[j]的最大值(注意i<j )
而且数据规模也是十万加的.....,可想而知,朴树的算法是会超时..
采用动态规划的思想...
先逐渐求出区间的最大值,注意每一次扩展时,都进行一次比较...
代码如下:
#include<cstdio>
#include<cstring>
const int maxn=;
int aa[maxn];
inline int max(int a,int b){
return a>b?a:b;
} int main(){
int n,m;
//freopen("test.in","r",stdin);
scanf("%d",&n);
while(n--){
scanf("%d",&m);
for(int i=;i<m;i++)
scanf("%d",aa+i);
int cnt=aa[]-aa[];
int maxc=aa[];
for(int i=;i<m;i++){
cnt=max(cnt,maxc-aa[i]);
maxc=max(maxc,aa[i]);
}
printf("%d\n",cnt);
}
return ;
}
进一步优化之后的
代码:
#include<cstdio>
#include<cstring>
const int maxn=;
inline int max(int a,int b){
return a>b?a:b;
}
int main(){
int n,m;
int b,c;
int ans;
freopen("test.in","r",stdin);
scanf("%d",&n);
while(n--){
scanf("%d",&m);
scanf("%d",&b);
ans =-;
for(int i=;i<m;i++){
scanf("%d",&c);
ans=max(ans,b-c);
b=max(b,c);
}
printf("%d\n",ans);
}
return ;
}
Uva----------(11078)Open Credit System的更多相关文章
- UVA 11078 Open Credit System(扫描 维护最大值)
Open Credit System In an open credit system, the students can choose any course they like, but there ...
- UVa 11549 Open Credit System
题意:给出n个数,找出两个整数a[i],a[j](i < j),使得a[i] - a[j]尽量大 从小到大枚举j,在这个过程中维护a[i]的最大值 maxai晚于ans更新, 可以看这个例子 1 ...
- Open Credit System(UVA11078)
11078 - Open Credit System Time limit: 3.000 seconds Problem E Open Credit System Input: Standard In ...
- 【UVA 11078】BUPT 2015 newbie practice #2 div2-A -Open Credit System
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/A In an open credit system, the ...
- Open Credit System
Open Credit SystemInput: Standard Input Output: Standard Output In an open credit system, the studen ...
- UVA Open Credit System Uva 11078
题目大意:给长度N的A1.....An 求(Ai-Aj)MAX 枚举n^2 其实动态维护最大值就好了 #include<iostream> #include<cstdio> u ...
- Uva 11078 简单dp
题目链接:http://uva.onlinejudge.org/external/110/11078.pdf a[i] - a[j] 的最大值. 这个题目马毅问了我,O(n^2)超时,记忆化一下当前最 ...
- UVA - 11400 Lighting System Design
题文: You are given the task to design a lighting system for a huge conference hall. After doing a lot ...
- uva11078 - Open Credit System(动态维护关键值)
这道题使用暴力解法O(n*n)会超时,那么用动态维护最大值可以优化到O(n).这种思想非常实用. #include<iostream> #include<cstdio> #in ...
随机推荐
- CodeForces 313C Ilya and Matrix
Ilya and Matrix Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Su ...
- 1:CSS中一些@规则的用法小结 2: @media用法详解
第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule ...
- [CF355C]Vasya and Robot(思维,贪心)
题目链接:http://codeforces.com/contest/355/problem/C 题意:1~n n个物品各重wi,现在有一个人可以从左边拿和从右边拿, 左边拿一个物品的花费是l*wi, ...
- linux留下后门的技巧
在团队内部的wiki上已经写出 http://drops.wooyun.org/tips/1951 http://www.freebuf.com/sectool/10474.html 还有一种方法是写 ...
- 函数(def)
一.为什么要使用函数: 面向过程的编程在代码里有很多代码是可以重复利用的,如果使用面向过程编程会使代码显得纷繁复杂,不利于他人和自己日后的阅读.而在函数式编程里,则可以把每个可重复利用的功能封装在一个 ...
- .net反射详解(转)
摘自:http://www.cnblogs.com/knowledgesea/archive/2013/03/02/2935920.html 概述反射 通过反射可以提供类型信息,从而使得我们开发人员在 ...
- Python基础学习笔记(六)常用列表操作函数和方法
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-lists.html 3. http://www.liaoxuef ...
- nyoj325 zb的生日(DFS)
zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...
- [转]-Gradle使用手册(一):为什么要用Gradle?
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1. ...
- JavaSE复习_3 继承
△先默认初始化,在显示初始化,在构造函数初始化 △继承的弊端:代码的耦合性增加了. △子类不能继承父类的构造方法. △子类会拥有父类的私有成员变量,但是必须通过get,set方法访问. △super不 ...