CF1467B Hills And Valleys

因为只能修改一次

且每点的修改只能对左右产生影响

画出所有的折线情况

发现贡献只能是3 ,或者1

如果满足-3就-3,否则-1;

但一直wa,又找不着该逻辑的毛病,先放着发酵一会

复制代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6;
int a[maxn],ok[maxn];
int main( )
{
    
//    freopen("lys.in","r",stdin);
    
    int t;
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        int n;
        cin>>n;
        
        for(int j=1;j<=n;j++)
        {
            cin>>a[j];
        }
        if(n==1||n==2)
        {
            cout<<0<<endl;
            continue;
        }
        int cnt=0;
        
        for(int j=2;j<=n-1;j++)
        {
            if((a[j]>a[j-1]&&a[j]>a[j+1])||(a[j]<a[j-1]&&a[j]<a[j+1]))
            {
                ok[j]=1;
                cnt++;
            }
 
        }
        
        for(int j=0;j<=n+10;j++)
        {
            a[j]=0;
        }
        
        int a=0;
        
        for(int j=2;j<=n-1;j++)
        {int p=ok[j]+ok[j+1]+ok[j-1];
          if(p==3)
           {
             a=1;    
           }
        }
        
        if(a==1)
        {
            printf("%d\n",cnt-3);
        }
        else {
            if(cnt>=1)
            {
                printf("%d\n",cnt-1);
            }
            else {
                printf("%d\n",cnt);
            }
        }
        
        for(int j=0;j<=n+10;j++)
        {
            ok[j]=0;
        }
    }
}
复制代码

 

posted @   liyishui  阅读(24)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示