B题求助

求助:B题我都快WA没了。

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
const int M=998244353;
int a[N];
signed main()
{
    int t;
    a[0]=-1;
    cin>>t;
    while(t--){
        int ans=1,n,as=1;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            if(a[i]==a[i-1]) as=((as%M)*2)%M;
            if(a[i-1]==a[i-2]&&a[i]!=a[i-1]) as=((as%M*2)%M-1+M)%M,ans*=as,as=1;
        }
        if(a[n]==a[n-1]) as=((as%M*2)%M-1+M)%M,ans*=as;//连续的相等数字
        for(int i=2;i<n;i++){
            if((a[i]>a[i-1]&&a[i]<a[i+1])||(a[i]<a[i-1]&&a[i]>a[i+1])) ans=((ans%M)*2)%M;//单调上升或下降的数字
        }
        cout<<ans<<"\n";
    }
    return 0;
}
全部评论
连续相等的也有可以全去掉和要留一个两种情况
点赞 回复 分享
发布于 2022-02-12 19:02
你试试这个数据 1 5 2 3 3 4 4 答案应该是12 QAQ
点赞 回复 分享
发布于 2022-02-12 19:02

相关推荐

08-13 08:23
已编辑
西南财经大学 产品经理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务