求助: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; }
全部评论
(3) 回帖