QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#690416 | #9353. Interesting Permutation | zqx | WA | 58ms | 7584kb | C++23 | 1.3kb | 2024-10-30 22:05:16 | 2024-10-30 22:05:21 |
Judging History
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++){
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;
}
// //变矮,前面n-(h[i-1]);
// if(n-h[i-1]-x>=1){
// (dp[i]+=dp[i-1]*(n-h[i-1]-x-1+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
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3536kb
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: 58ms
memory: 7584kb
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 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 2 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0...
result:
wrong answer 7th lines differ - expected: '24576', found: '0'