UVA 507 Jill Rides Again
来源:互联网 发布:淮南大数据公司 编辑:程序博客网 时间:2024/04/30 13:40
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=448
题目:附件
题意:一个求最大子段和。
简单说来就是一段公交车路,各个车站为1,2,3...s, 各个车站之间的这段路好感值是不同的, 例如车站1到车站2的好感度是5, 车站3到车站4的好感度是-3. 求一段连续的车站的好感度之和最大是多少,还要求出位置。有多个结果时,去区间长度最长的,长度相同,取起点靠前的。
题解:最大字段和问题见http://www.cnblogs.com/CCBB/archive/2009/04/25/1443455.html
代码:
#include<cstdio>#include<iostream>using namespace std;const int MAX=20000+10;int a[MAX];int N;struct type{ int l,r,val; type(){} type(int _l,int _r,int _val) { l=_l; r=_r; val=_val; }};type max2(type a,type b){ if(a.val!=b.val) return a.val>b.val?a:b; else { if(a.r-a.l!=b.r-b.l) return a.r-a.l>b.r-b.l?a:b; else return a.l<b.l?a:b; }}type max3(type a,type b,type c){ return max2(max2(a,b),c);}type MaxSum(int l,int r){ if(l==r) { return type(l,r+1,a[l]); } int mid=(l+r)/2; type max1=MaxSum(l,mid); type max2=MaxSum(mid+1,r); int leftmax=0,rightmax=0; int leftsum=0,rightsum=0; int left=mid+1,right=mid; for(int i=mid; i>=l; i--) { leftsum+=a[i]; if(leftsum>=leftmax) { leftmax=leftsum; left=i; } } for(int i=mid+1; i<=r; i++) { rightsum+=a[i]; if(rightsum>=rightmax) { rightmax=rightsum; right=i+1; } } return max3(max1,max2,type(left,right,leftmax+rightmax));}int main(){ int T; cin>>T; int Tcase=1; while(T--) { cin>>N; for(int i=1; i<N; i++) cin>>a[i]; type ans=MaxSum(1,N-1); if(ans.val<=0)printf("Route %d has no nice parts\n",Tcase++); else printf("The nicest part of route %d is between stops %d and %d\n",Tcase++,ans.l,ans.r); } return 0;}
阅读全文
0 0
- UVa 507 - Jill Rides Again
- UVa 507 - Jill Rides Again
- uva 507 - Jill Rides Again
- UVa 507 - Jill Rides Again
- UVa 507 Jill Rides Again
- UVA 507 - Jill Rides Again
- UVA - 507 Jill Rides Again
- UVa 507 - Jill Rides Again
- UVa 507 - Jill Rides Again
- UVA--507 Jill Rides Again
- UVa 507 - Jill Rides Again
- uva 507Jill Rides Again
- UVA 507 Jill Rides Again
- UVA 507 - Jill Rides Again 动态规划
- uva 507 Jill Rides Again(检索)
- [动态规划]UVA 507 - Jill Rides Again
- uva 507 Jill Rides Again (DP)
- uva 507 Jill Rides Again (分治)
- Android中Context详解 ---- 你所不知道的Context
- XPATH CSS PATH CHEAT SHEET
- 负数的二进制处理
- 父类私有变量是否被子类继承详细解说(答案:内存中存在,但sun公司定义为不继承)
- Java设置session超时(失效)的三种方式
- UVA 507 Jill Rides Again
- crontab 重定向错误日志 加上时间
- submit提交时刷新到iframe中,从而使主页面不被刷新。
- std::bind 浅析
- 广义线性模型
- mysql中正则表达式表及实践
- Dockerfile 构建nginx镜像并运行
- MOOC课程精选舞步学院精彩分享
- Dynamic/Static/Reinterpret/Const and Volatile Cast (English)