QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#398620#7301. Even Three is OddedisnimorFAC ✓51ms66716kbC++141.9kb2024-04-25 15:51:412024-04-25 15:51:41

Judging History

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

  • [2024-04-25 15:51:41]
  • 评测
  • 测评结果:AC
  • 用时:51ms
  • 内存:66716kb
  • [2024-04-25 15:51:41]
  • 提交

answer

#include<bits/stdc++.h>
namespace ckain {
//default defines
#define il inline
#define debug(...) fprintf(stderr, __VA_ARGS__)
#define pii pair<int, int>
#define fr first
#define sc second
#define eb emplace_back
#define ll long long
#define mset(f, z) memset(f, z, sizeof(f))
#define mcpy(f, g) memcpy(f, g, sizeof(g))
//default functions
template<typename T=ll>
il T rd() {
	T s=0; bool f=1; char c=getchar();
	while(!isdigit(c)) f^=(c=='-'), c=getchar();
	while(isdigit(c)) s=s*10+c-'0', c=getchar();
	return f? s:-s;
}
template<typename T> il void ckmx(T &x, T y) {if(x<y) x=y;}
template<typename T> il void ckmn(T &x, T y) {if(y<x) x=y;}
}
using namespace std;
using namespace ckain;
char _begin;
#define int ll
const int N=2005, P=1e9+7;

int n, w[N], f[N][N], g[N][N], si[N], sw[N];

void get(int *_g) {
	for(int i=1; i<=n; i++) {
		si[i]=(_g[i]*(i-1)+si[i-1])%P;
		sw[i]=(_g[i]*w[i]+sw[i-1])%P;
	}
}

void solve() {
	for(int i=1; i<=n; i++) {
		w[i]=rd();
		for(int j=1; j<=n; j++) f[i][j]=g[i][j]=0;
	}
	if(n<3) {
		printf("0\n");
		return;
	}
	for(int i=1; i<=n; i++) {
		f[2][i]=i;
		g[2][i]=1;
	}
	for(int i=2; i<n; i++) {
		get(g[i]);
		int sf=0;
		for(int j=1; j<=n; j++) {
			(sf+=f[i][j])%=P;
			(g[i+1][j]+=f[i][j]*w[j])%=P;//p(i+1)<p(i)
			(f[i+1][j]+=sf*w[j])%=P;
			(f[i+1][j]+=si[j]*w[j])%=P;
			(f[i+1][j]+=(sw[n]-sw[j]+P)*j)%=P;
			(g[i+1][j]+=(sw[n]-sw[j]+P))%=P;
			/*
			for(int k=1; k<=n; k++) {
				if(k>=j) (f[i+1][k]+=f[i][j]*w[k])%=P;
				(f[i+1][k]+=g[i][j]*w[max(j, k)]%P*min(j-1, k))%=P;
				if(k<j) (g[i+1][k]+=g[i][j]*w[j])%=P;
			}
			*/
		}
	}
	int ans=0;
	for(int i=1; i<=n; i++) {
		(ans+=f[n][i])%=P;
		(ans+=g[n][i]*(i-1))%=P;
	}
	printf("%lld\n", ans);
}

char _end;
signed main(signed argc, char *argv[]) {
	debug("%lfMB\n", (&_end-&_begin)/1024./1024.);
	while(cin>>n) solve();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5892kb

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: 5972kb

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: 6032kb

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: 2ms
memory: 7980kb

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: 11ms
memory: 23108kb

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: 47ms
memory: 66584kb

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: 51ms
memory: 66464kb

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: 45ms
memory: 66604kb

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: 50ms
memory: 66588kb

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: 45ms
memory: 66612kb

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: 47ms
memory: 66624kb

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: 43ms
memory: 66640kb

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: 50ms
memory: 66592kb

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: 46ms
memory: 66616kb

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: 46ms
memory: 66716kb

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