标签:
打靶大牛goleenuoer可喜欢打水漂了,他的靶子可以打到河面上的任何一条鱼,可是他的水漂打得实在是烂,无论怎么打那石子只会在河面上跳跃两次就“扑通”了。这天他又来打水漂了,这条宽w米,每隔一米都会有一条鱼,每条鱼都有它的美观值,他想知道如何打才能得到两条鱼之间最大的美观值总和。
输入:
第一行仅包括为一个整数n,表示共有n条鱼(他们的位置点分别为0到n-1)第二行包括n个数(两两之间用一个空格分隔),依次为n条鱼的美观值。
输出:
一行包括三个数,分别表示石子的起点、石子的落点和所得到的两条鱼之间美观值总和,如果美观值总和为负数时输出0。(不包括落点的鱼)
输入示例:
10
5 8 -5 -10 5 1 -3 2 4 2
输出示例:
0 2 13
数据范围:1<=n<=10000,-500<鱼的美观值范围为<500
没什么好说的,前缀和水过……
1 #include<iostream> 2 using namespace std; 3 int posi,posj,ans; //分别记录石子的起点、落点和最大的美观值 4 int main() 5 { 6 int i,n,pos=0,tmp=0,a[10001]; 7 cin>>n; 8 for(i=1;i<=n;i++) 9 { 10 cin>>a[i]; //第i条鱼的美观值为a[i] 11 tmp+=a[i]; //将第i条鱼的美观值累加 12 if(tmp>ans){ans=tmp;posj=i;posi=pos;} //暂时记录起点和终点 13 else if(ans<=0){pos=i+1;ans=0;}//如果美观值非正,重置起点 14 } 15 if(ans==0)cout<<0; 16 else cout<<posi<<" "<<posj<<" "<<ans; 17 //system("pause>nul"); 18 return 0; 19 }
标签:
原文地址:http://www.cnblogs.com/nightfury/p/5040946.html