QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#488288 | #7301. Even Three is Odd | xlwang | AC ✓ | 100ms | 35180kb | C++14 | 2.5kb | 2024-07-23 20:09:53 | 2024-07-23 20:09:54 |
Judging History
answer
#include<bits/stdc++.h>
// #define int ll
#define ll long long
#define fr(i,j,k) for(register int i=j;i<=k;++i)
#define rf(i,j,k) for(register int i=j;i>=k;--i)
#define foredge(i,j) for(register int i=head[j];i;i=e[i].nxt)
#define pb push_back
#define Times printf("Time:%.3lf\n",clock()/CLOCKS_PER_SEC)
#define pii pair<int,int>
#define mk make_pair
using namespace std;
inline int read(){
int x=0;
bool f=0;
char c=getchar();
while(!isdigit(c)) f|=(c=='-'),c=getchar();
while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();
return f?-x:x;
}
inline void write(int x){
if(x<0){putchar('-');x=-x;}
if(x>9)write(x/10);
putchar(x%10+'0');
}
inline void writeln(int x){write(x); puts("");}
inline void writepl(int x){write(x); putchar(' ');}
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
inline int randfind(int l,int r){return rnd()%(r-l+1)+l;}
const int Maxn=2e3+10,mod=1e9+7;
int n,val[Maxn];
inline void add(int &x,int y){x+=y;if(x>=mod) x-=mod;}
int f[Maxn][Maxn][2];
int S[Maxn];
inline void work(){
fr(i,1,n) val[i]=read();
fr(i,0,n) fr(j,0,n) fr(k,0,1) f[i][j][k]=0;
fr(i,1,n){
f[2][i][0]=1;f[2][i][1]=i-1;
}
fr(i,3,n){
fr(j,1,n) S[j]=(S[j-1]+f[i-1][j][1])%mod;
fr(k,1,n) add(f[i][k][1],1ll*S[k-1]*val[k]%mod);
fr(j,1,n) S[j]=(S[j-1]+1ll*f[i-1][j][0]*j%mod)%mod;
fr(k,1,n) add(f[i][k][1],1ll*S[k-1]*val[k]%mod);
S[n+1]=0;rf(j,n,1) S[j]=(S[j+1]+1ll*f[i-1][j][0]*val[j]%mod)%mod;
fr(k,1,n) add(f[i][k][1],1ll*S[k]*(k-1)%mod);
S[n+1]=0;rf(j,n,1) S[j]=(S[j+1]+1ll*f[i-1][j][0]*val[j]%mod)%mod;
fr(k,1,n) add(f[i][k][0],S[k]);
fr(k,1,n) add(f[i][k][0],1ll*f[i-1][k][1]*val[k]%mod);
// fr(j,1,n){
// fr(k,j+1,n) add(f[i][k][1],1ll*f[i-1][j][1]*val[k]%mod);
// add(f[i][j][0],1ll*f[i-1][j][1]*val[j]%mod);
// fr(k,j+1,n) add(f[i][k][1],1ll*f[i-1][j][0]*j%mod*val[k]%mod);
// // add(f[i][j][0],1ll*f[i-1][j][0]*val[j]%mod);
// fr(k,1,j) add(f[i][k][1],1ll*f[i-1][j][0]*val[j]%mod*(k-1)%mod);
// fr(k,1,j) add(f[i][k][0],1ll*f[i-1][j][0]*val[j]%mod);
// }
}
// fr(i,1,n) fr(j,1,n) fr(k,0,1) cout<<i<<' '<<j<<' '<<k<<' '<<f[i][j][k]<<endl;
int ans=0;
fr(i,1,n){
add(ans,f[n][i][1]);
add(ans,1ll*f[n][i][0]*i%mod);
}
writeln(ans);
}
inline void init(){
while(cin>>n) work();
}
signed main(){
// freopen("input.in","r",stdin);
// freopen("output.out","w",stdout);
init();
// printf("\nTIME:%.3lf",(double)clock()/CLOCKS_PER_SEC);
return 0;
}
/*
5
1 10 100 1000 10000
*/
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3660kb
input:
3 1 2 3 4 1 1 1 1
output:
72 256
result:
ok 2 number(s): "72 256"
Test #2:
score: 0
Accepted
time: 1ms
memory: 3836kb
input:
20 2 1 1 2 1 1 2 2 1 1 1 2 1 2 2 2 2 2 1 1 20 1 1 1 1 1 1 1 2 2 2 2 1 2 1 2 1 1 1 2 2 20 2 1 2 2 1 2 2 1 1 1 2 1 2 1 2 2 1 1 2 1 20 1 1 1 1 1 2 1 1 1 2 1 2 2 1 1 2 2 2 1 2 20 2 2 1 1 2 2 2 1 2 2 1 2 2 2 2 1 2 2 2 2 20 1 1 2 1 2 1 2 2 1 2 2 2 1 2 1 2 2 2 1 1 20 1 2 1 1 1 2 1 1 1 1 1 2 1 2 1 1 2 2 2 1...
output:
319733964 40518147 400924261 38787721 897349820 493064982 759767625 401417778 567673098 202982388 409477312 214563090 608955253 887076718 443657041 235173408 471938201 768115792 934580672 588618862 808662651 462080423 871122184 321300347 413884324 720362807 549790197 780388163 250729956 49025886 263...
result:
ok 100 numbers
Test #3:
score: 0
Accepted
time: 1ms
memory: 3640kb
input:
20 983380751 708372152 534389660 854380310 406905313 606185721 941692711 734994736 910390968 900300887 183918461 371552529 798892008 68293780 650769940 547768169 502245417 567965812 623465221 632455730 20 969814296 632645698 353407887 775111974 19835316 622749258 218528404 235697220 677299937 151257...
output:
901128997 908372962 843262444 477210532 825370959 861748183 818296926 567410118 495019857 123498731 723176529 841859717 213644035 845439384 489145021 750276499 460768856 443673849 909615746 996576192 181226793 394196473 806760075 394894275 961660067 359733606 645650813 957584478 290217414 160017286 ...
result:
ok 100 numbers
Test #4:
score: 0
Accepted
time: 3ms
memory: 5924kb
input:
50 546326159 188010383 744080796 970371898 707879921 337976248 218468964 271634902 363822839 142649550 74624041 695797688 16056713 122318400 445551499 511751832 358582430 495733936 591190909 610584228 125744325 544261750 202395079 2630396 345195167 148750363 990265221 239686197 583270754 451628256 8...
output:
953472132 176277811 817755515 345600464 71009615 636715799 672096907 783602797 527280447 638297563 725540036 674573744 271472152 563761119 393445571 696033139 495478492 390457147 698571984 18175901 60734091 368367517 655107436 934986143 808192747 55862567 896507513 532862866 212425116 218271513 4785...
result:
ok 40 numbers
Test #5:
score: 0
Accepted
time: 25ms
memory: 10684kb
input:
500 923289363 281790836 394996448 3461119 297656725 85160318 333917012 944579859 277222705 364228860 657772876 476918464 201589281 374257316 459651358 361386596 254071925 732085023 324787251 775459986 520545937 132229513 639843210 956102033 228591021 59772402 102435380 277235675 864305236 752164831 ...
output:
547107559 173944705 96178102 358654284
result:
ok 4 number(s): "547107559 173944705 96178102 358654284"
Test #6:
score: 0
Accepted
time: 100ms
memory: 35136kb
input:
2000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
596636543
result:
ok 1 number(s): "596636543"
Test #7:
score: 0
Accepted
time: 92ms
memory: 35120kb
input:
2000 1 2 2 2 1 2 1 1 1 1 1 1 2 1 1 2 2 2 1 2 2 2 2 1 1 1 1 2 2 2 2 2 2 1 2 1 1 1 1 1 1 1 2 2 2 2 2 2 1 2 1 2 1 2 2 1 1 2 2 2 1 1 2 1 1 2 2 2 1 2 2 2 2 1 1 1 1 2 2 2 2 2 1 2 1 1 1 2 1 2 2 1 2 1 2 2 2 1 2 1 1 1 2 2 2 2 1 1 2 1 2 1 1 2 1 2 1 1 1 1 1 2 2 2 1 1 2 2 1 2 1 2 1 1 2 1 1 1 2 1 1 1 2 2 2 2 2 1...
output:
60361314
result:
ok 1 number(s): "60361314"
Test #8:
score: 0
Accepted
time: 97ms
memory: 35136kb
input:
2000 1 2 1 1 2 2 2 3 1 3 2 3 2 2 3 1 2 1 3 1 3 2 2 2 2 3 3 3 2 3 1 2 2 1 3 2 3 1 3 3 2 1 2 2 2 2 3 1 3 1 2 2 3 3 1 2 1 1 3 2 2 2 2 2 1 2 1 1 2 2 1 2 2 2 1 1 3 1 2 2 3 3 3 1 2 2 1 2 3 3 3 1 2 1 2 1 2 2 2 3 2 1 3 3 3 1 3 2 2 1 1 1 1 1 3 2 1 2 3 2 3 3 1 1 3 3 3 2 2 1 1 3 1 2 3 1 2 3 1 1 2 3 2 1 1 2 1 2...
output:
846447792
result:
ok 1 number(s): "846447792"
Test #9:
score: 0
Accepted
time: 92ms
memory: 35076kb
input:
2000 1 3 1 3 1 3 4 3 2 1 4 2 4 4 1 4 1 2 3 4 3 4 3 1 3 3 4 2 1 4 3 3 2 2 3 1 4 2 2 2 2 2 2 3 2 3 1 4 1 1 2 4 2 3 2 2 3 4 4 1 2 4 4 1 1 4 4 3 3 2 2 1 1 3 3 4 1 2 4 4 3 4 4 4 3 2 3 3 4 1 2 4 1 3 4 3 2 3 2 1 3 1 4 4 1 4 3 1 3 2 1 1 3 3 3 4 2 2 2 1 4 2 2 3 2 3 2 1 1 3 3 4 2 1 1 4 4 1 4 3 3 2 4 1 1 3 1 1...
output:
665904082
result:
ok 1 number(s): "665904082"
Test #10:
score: 0
Accepted
time: 97ms
memory: 35052kb
input:
2000 2 3 1 5 2 3 3 2 2 5 5 2 1 4 2 1 2 1 5 2 5 2 5 2 1 3 4 5 5 1 4 3 4 1 1 4 3 4 4 2 3 3 1 4 3 4 3 3 3 1 5 5 1 2 5 2 4 4 2 4 1 3 3 5 2 3 2 2 3 2 3 4 4 1 1 1 2 3 1 1 3 4 1 4 5 5 4 3 5 5 5 2 2 1 2 1 3 3 5 5 2 4 1 5 3 3 5 1 2 5 4 3 5 2 1 1 4 5 3 1 3 4 2 4 5 4 5 3 3 4 1 4 2 2 4 2 3 1 4 3 1 5 5 1 4 4 4 3...
output:
469569800
result:
ok 1 number(s): "469569800"
Test #11:
score: 0
Accepted
time: 100ms
memory: 35180kb
input:
2000 4 2 2 1 4 3 1 3 3 4 3 5 5 6 3 5 6 1 1 3 2 5 3 6 5 2 2 4 6 1 5 2 2 2 5 3 4 6 1 5 4 1 2 6 3 4 4 6 3 2 2 1 2 4 4 1 4 6 4 3 6 2 5 6 1 1 4 1 2 2 4 6 3 4 4 6 6 4 6 2 4 4 2 1 5 6 5 6 1 5 4 3 5 1 2 1 1 2 6 6 3 2 5 2 6 6 4 3 4 5 2 2 3 2 1 2 6 3 4 2 1 5 2 1 6 3 1 1 2 1 4 3 6 2 4 5 6 2 4 2 6 3 2 5 5 3 5 4...
output:
750570608
result:
ok 1 number(s): "750570608"
Test #12:
score: 0
Accepted
time: 92ms
memory: 35128kb
input:
2000 1 3 1 4 6 7 2 2 3 1 2 6 4 2 6 5 1 1 4 3 7 7 1 6 4 6 3 2 5 7 5 4 1 6 7 3 1 7 7 5 5 2 3 1 7 4 5 3 4 3 1 3 4 1 4 6 6 7 1 6 2 3 6 2 6 1 7 6 3 2 1 7 1 7 4 3 1 1 2 1 4 6 5 3 3 7 3 1 1 4 1 4 1 4 1 4 5 3 5 2 6 6 2 1 5 6 5 2 6 5 4 7 2 3 3 7 1 7 5 7 4 5 1 3 3 6 1 5 5 6 2 2 7 1 6 7 7 4 2 2 4 2 6 7 6 7 1 5...
output:
271631582
result:
ok 1 number(s): "271631582"
Test #13:
score: 0
Accepted
time: 92ms
memory: 35104kb
input:
2000 6 4 8 6 3 2 5 3 4 2 6 5 1 1 5 1 7 7 7 3 5 3 8 2 7 4 4 2 7 1 7 8 7 3 6 2 7 6 4 5 5 4 6 5 8 1 7 8 5 8 5 3 3 4 2 4 6 8 4 6 7 8 5 8 2 6 3 6 6 6 1 6 1 2 5 5 2 6 8 8 5 5 1 3 3 2 2 5 7 8 1 2 1 3 1 8 7 5 6 2 7 2 5 8 7 4 1 5 6 7 7 8 8 6 3 4 5 4 1 7 2 4 5 6 6 2 3 8 7 8 8 7 3 2 6 2 7 2 4 6 4 4 4 8 4 3 4 4...
output:
317633495
result:
ok 1 number(s): "317633495"
Test #14:
score: 0
Accepted
time: 93ms
memory: 35072kb
input:
2000 4 5 7 1 2 4 1 8 3 1 3 2 7 3 2 2 7 4 4 9 1 6 3 4 4 2 4 7 8 3 3 9 7 1 3 4 6 7 5 3 6 5 3 4 4 3 3 5 4 1 9 8 5 8 9 1 4 5 8 2 3 3 9 5 5 1 3 9 7 7 3 7 3 4 5 3 6 2 3 1 8 9 1 2 5 1 5 2 5 9 4 6 2 8 5 1 3 8 8 3 6 7 7 2 8 6 9 8 8 9 2 3 6 6 8 5 9 7 2 8 7 4 8 5 7 1 5 4 7 3 6 1 5 9 6 5 6 9 1 9 2 2 1 7 9 2 6 9...
output:
997354671
result:
ok 1 number(s): "997354671"
Test #15:
score: 0
Accepted
time: 97ms
memory: 35080kb
input:
2000 5 2 5 1 3 3 1 6 6 7 8 1 3 9 6 2 8 1 10 10 1 2 4 7 9 5 8 6 10 5 9 10 2 4 7 9 4 7 6 9 5 2 4 1 10 9 7 8 10 1 10 8 3 7 2 2 10 8 10 4 2 10 6 4 1 7 8 9 5 5 5 1 1 4 1 9 3 4 3 2 8 2 10 10 7 3 4 6 1 2 3 8 1 1 10 3 10 4 1 5 2 1 3 3 7 6 7 5 1 3 4 1 3 1 10 5 1 1 7 2 4 7 1 1 4 8 4 4 2 1 1 4 7 5 1 5 1 4 8 4 ...
output:
436029916
result:
ok 1 number(s): "436029916"
Extra Test:
score: 0
Extra Test Passed