JustOj 2042: Dada的游戏

题目描述

Dada无聊时,喜欢做一个游戏,将很多钱分成若干堆排成一列,每堆钱数不固定,谁能找出每堆钱数严格递增的最长区间,谁就是人生赢家了。Dada可能脑子里的水还没干,她找不出来,你来帮她找找吧。

输入

多组输入,至文件结尾。
对于每组数据:
第一行包含一个正整数n(1<=n<=100000),一共有n堆钱。
第二行输入n个正整数a1,a2,...,an (1<=ai<=1000000000),代表每一堆的钱数
大量输入,请使用scanf。

输出

打印严格递增的最长区间的长度

样例输入
5
1 7 2 11 15
6
100 100 100 100 100 100
3
1 2 3
样例输出
3
1
3

题解:遍历整个区间当后一个比前一个大的话就让一个计数器++;当后一个比前一个小的时候,把计数器的值和最大值进行
比较并且把计数器置为1,再向后面遍历(PS:因为要连续的所以既然后一个比前一个小,当然就直接从当前去找就好了,
回去的话肯定没有有现在最大值的大,所以把i置为j的值)
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <vector>
 6 #include <cstdlib>
 7 #include <iomanip>
 8 #include <cmath>
 9 #include <ctime>
10 #include <map>
11 #include <set>
12 #include <queue>
13 using namespace std;
14 #define lowbit(x) (x&(-x))
15 #define max(x,y) (x>y?x:y)
16 #define min(x,y) (x<y?x:y)
17 #define MAX 100000000000000000
18 #define MOD 1000000007
19 #define pi acos(-1.0)
20 #define ei exp(1)
21 #define PI 3.141592653589793238462
22 #define INF 0x3f3f3f3f3f
23 #define mem(a) (memset(a,0,sizeof(a)))
24 typedef long long ll;
25 ll gcd(ll a,ll b){
26     return b?gcd(b,a%b):a;
27 }
28 bool cmp(int x,int y)
29 {
30     return x>y;
31 }
32 const int N=100010;
33 const int mod=1e9+7;
34 
35 int main()
36 {
37     int n,a[N];
38     while(scanf("%d",&n)!=EOF){
39         for(int i=0;i<n;i++)
40             scanf("%d",&a[i]);
41         int maxx=0,i,j;
42         for(i=0;i<n-maxx;){
43             int temp=1;
44             for(j=i+1;j<n;j++){
45                 if(a[j]>a[j-1]) temp++;
46                 else break;
47             }
48             if(temp>maxx) maxx=temp;
49             i=j;
50         }
51         printf("%d
",maxx);
52     }
53     return 0;
54 }
原文地址:https://www.cnblogs.com/wydxry/p/7278486.html