B - Islands in the Data Stream II

题意:
给出12个数字,如果一个子序列的两个端点及以内的每一个元素都大于子序列端点两边前一个和后一个数字,那么这个子序列称之为岛,求出这个序列一共有多少个岛。

题解:
暴力枚举

代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

#define lowbit(x) x & (-x)
#define lson left,mid,root << 1
#define rson mid+1,right,root << 1 | 1

using namespace std;

typedef pair<int, int> PII;
typedef long long ll;
typedef unsigned long long ull;
const ll mod=1e9+7;
const ll inf=0x3f3f3f3f;
const double pi=acos(-1.0);
const double eps=1e-8;
const int maxn=1e5+100;


int main()
{
   int t;
   int p;
   int f;
   int ans;
   int a[15];
   scanf("%d",&t);
   while(t --)
        {
        scanf("%d",&p);
        for(int i = 1; i <= 12; i ++)
            scanf("%d",&a[i]);
        ans = 0;
        for(int i = 1; i <= 12; i ++)
            {
              for(int j = i; j <= 12; j ++)
                  {
                    f = 0;
                    for(int k = i; k <= j; k ++)
                      {
                        if(a[k] <= a[i - 1] || a[k] <= a[j + 1])
                          {
                            f = 1;
                            break;
                          }
                      }
                    if(f == 0)
                        ans ++;
                  }
            }
        printf("%d %d\n", p,ans);
        }

   return 0;
}

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注