202109-2 非零段划分

简介: 202109-2 非零段划分

8abb75d7fe184c0f942516dfb1cfb46b.png

c228595ca934437487310d8085c11b8a.png

96d53727a8f743ab8cada8d9494e51d1.png

70分代码:

#include <bits/stdc++.h> //70分 30分超时
using namespace std;
const int maxn = 500005;
int n, N;
int a[maxn];
int b[maxn];
int vis[maxn];
 
int main()
{
   cin >> n;
   for (int i = 1; i <= n; i++)
   {
      cin >> a[i];
   }
   int p = 0;
   int ans11 = 0;
   for (int i = 1; i <= n; i++)
   {
      int b[maxn] = {0};
      int ans = 0;
      if(vis[a[i]]==1) continue;
      p = a[i];
      vis[a[i]]=1;
      for (int j = 1; j <= n; j++)
      {
         if (a[j] < p)
         {
         }
         else
         {
            b[j] = a[j];
         }
      }
      for (int j = 1; j <= n; j++)
      {
         if (b[j] != 0 && b[j - 1] == 0)
         {
            ans++;
         }
      }
      if (ans > ans11)
      {
 
         ans11 = ans;
      }
   }
   cout << ans11;
}


100分代码:

#include <bits/stdc++.h> //100分
using namespace std;
const int maxn = 500005;
int n;
int a[maxn];
int cnt[maxn];
 
int main() // 类似岛屿问题优化  后缀和
{
   cin >> n;
   int max1 = 0;
   for (int i = 1; i <= n; i++)
   {
      cin >> a[i];
      max1 = max(max1, a[i]);
   }
   a[0] = 0;
   a[n + 1] = 0;                 // 边界默认为0
   n = unique(a, a + n + 2) - a; // a[0]到a[n+1]都要unique
   // 要-a  此时不存在相邻处相同的情况
   // unique很重要,这里只需考虑相邻元素不同的情况
   for (int i = 1; i < n; i++)
   {
      if (a[i - 1] < a[i] && a[i] > a[i + 1])
      { // 凸峰
         cnt[a[i]]++;
      }
      else if (a[i - 1] > a[i] && a[i] < a[i + 1])
      { // 凹谷
         cnt[a[i]]--;
      }
   }
   int res = 0, sum = 0;
   for (int i = max1 + 100; i >= 1; i--)
   {
      sum += cnt[i];
      res = max(res, sum);
   }
   cout << res;
}


6094c5f0064143738c2653177bd404a5.png

相关文章
|
XML 前端开发 架构师
|
26天前
需要划分
va的ava的va的ava的内存需要划分成为5个部分: 1.栈(Stack)存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。 2.堆(Heap)凡是new出来的东西,都是在堆当中 堆内存的东西都有一个地址值:16进制 堆内存的数据,都有默认值。规则: 整数 默认是0 浮点 默认0.0 字符 默认'\u0000'
19 0
|
算法
1315:【例4.5】集合的划分
1315:【例4.5】集合的划分
|
存储 消息中间件 监控
大型系统如何划分边界?
大型系统如何划分边界?
284 0
大型系统如何划分边界?
实现对周的划分
实现对周的划分
50 0
|
算法
集合划分问题
集合划分问题
183 0
集合划分问题
|
网络协议 网络架构
网络划分的方法
一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。
|
人工智能 算法 BI
202109-2 非零段划分
202109-2 非零段划分
146 0
202109-2 非零段划分
|
Java 中间件 测试技术
领域划分的规则是什么?
领域划分的规则是什么?
1229 0
领域划分的规则是什么?
|
算法 前端开发
划分数组使最大差为 K
🎈每天进行一道算法题目练习,今天的题目是“划分数组使最大差为 K”。
231 0