QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#690430#9353. Interesting PermutationzqxWA 67ms5516kbC++231.2kb2024-10-30 22:07:232024-10-30 22:07:24

Judging History

你现在查看的是最新测评结果

  • [2024-10-30 22:07:24]
  • 评测
  • 测评结果:WA
  • 用时:67ms
  • 内存:5516kb
  • [2024-10-30 22:07:23]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long 
#define AC return 0;
#define pii pair<int,int>
#define all(tar) tar.begin(),tar.end()
const int maxx=1e6+5;
const int mod=1e9+7; 
using namespace std;
int n,m,t;
int h[maxx];
void solve(){
	 cin>>n;
	 for(int i=1;i<=n;i++)cin>>h[i];//mx-mi;
	 //大部分时候h[i]=h[i-1]
	 for(int i=1;i<=n;i++){
		if(h[i]<h[i-1]||h[i]>=n){
			cout<<0<<'\n';
			return ;
		}
	 } 
	 vector<int>dp(n+1,0);
	 vector<int>pre(n+1,0);
	 dp[2]=2*(n-h[2]);
	 pre[1]=1;
	 pre[2]=2;
	//  cout<<dp[2]<<'\n';
	 if(h[1]!=0||h[2]==h[1]){
		cout<<0<<'\n';
		return ;
	 }
	 for(int i=3;i<=n;i++){
		pre[i]=i;
		if(h[i]==h[i-1]){
           pre[i]=pre[i-1];
		   int c=h[i]-(i-pre[i]);
		   if(c<=0){
			  cout<<0<<'\n';
			  return ;
		   }else {
             dp[i]=dp[i-1]*c%mod;	;
		   }
		}else {
          int x=h[i]-h[i-1];
		  //变高,前面至少h[i-1]+1
		  if(h[i-1]+1+x<=n){
			 (dp[i]+=dp[i-1]*(n-(h[i-1]+1+x)+1)%mod)%=mod;
		  }
		}
	 }
	 cout<<dp[n]<<'\n';
}
signed main(){
   ios::sync_with_stdio(false);
   cin.tie(0);
   cout.tie(0);
   cin>>t;
   while(t--){
	  solve();
   }
   AC
}   

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3548kb

input:

3
3
0 2 2
3
0 1 2
3
0 2 3

output:

2
4
0

result:

ok 3 lines

Test #2:

score: -100
Wrong Answer
time: 67ms
memory: 5516kb

input:

10039
14
5 6 7 8 9 10 11 12 13 13 13 13 13 13
14
0 5 6 7 8 9 10 11 12 13 14 14 14 14
1
1
14
0 5 4 8 9 10 11 12 13 13 13 13 13 13
45
0 1 1 2 2 3 5 5 6 6 8 9 11 13 15 17 18 18 20 22 22 24 26 26 26 26 27 27 27 28 30 32 32 33 34 34 34 36 36 38 38 38 39 39 44
24
0 2 3 5 7 9 9 10 11 12 13 14 14 14 14 15 1...

output:

0
0
0
0
0
896477931
312942812
116153578
258658015
0
599245707
497857052
888480326
322174075
570819046
36
704617987
725925561
2
94693976
227670483
1293366
0
2
0
12377607
0
0
169345579
0
0
665579619
1440
940858734
45722880
0
70437118
0
625143374
132002948
2
716023210
177497257
0
0
2
0
2
372424716
0
0
...

result:

wrong answer 6th lines differ - expected: '0', found: '896477931'