QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#591045#7301. Even Three is OddhyfansWA 1ms3984kbC++203.3kb2024-09-26 13:47:132024-09-26 13:47:13

Judging History

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

  • [2024-09-26 13:47:13]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3984kb
  • [2024-09-26 13:47:13]
  • 提交

answer

// @Nullptr_qwq @Nullptr_qwQ @Nullptr_qWq @Nullptr_qWQ @Nullptr_Qwq @Nullptr_QwQ @Nullptr_QWq @Nullptr_QWQ
//File uses UTF-8 encoding.
//By: Luogu@tzl_Dedicatus545(UID:308854) Yuanshen@tzl_Dedicatus(UID:273152640)
//Ayaka bless me!
// #define _TZL_DEBUG_
#if defined(_TZL_DEBUG_) && defined(TZL_MEOW)
#define _GLIBCXX_DEBUG
#endif
#include <bits/stdc++.h>
#define int long long
#define ll long long
#define ull unsigned long long
#define rep(i,x,y,z) for(int i=(x),i##misaka=(y);i<=i##misaka;i+=(z))
#define per(i,x,y,z) for(int i=(x),i##mik0t0=(y);i>=i##mik0t0;i-=(z))
#define pb push_back
#define eb emplace_back
#define pii pair<int,int>
#define i128 __int128
#define _1 first
#define _2 second
#define ld long double
#define cint const int
#define pcnt __builtin_popcountll
#define vint vector<int>
#define vpii vector<pair<int,int> >
using namespace std;

const int inf=(sizeof(int)==4?0x3f3f3f3f:0x3f3f3f3f3f3f3f3f);
const int mod=1e9+7;
const long double EPS=1e-7;
const int maxn=2200;
int gcd(int a,int b){
	if(!a || !b)	return a+b;
	unsigned az=__builtin_ctzll(a),bz=__builtin_ctzll(b);unsigned z=min(az,bz);b>>=bz;
	while(a){	a>>=az;int d=a-b;az=__builtin_ctzll(d),b=min(a,b),a=(d<0?-d:d);}
	return b<<z;
}
template<typename T>void chkmin(T& x,const T& y){return y<x?(x=y,void()):void();}
template<typename T>void chkmax(T& x,const T& y){return x<y?(x=y,void()):void();}
bool Mbe;
void inc(int &x,int y){	x=(x+y>=mod?x+y-mod:x+y);}
void dec(int &x,int y){	x=(x-y<0?x-y+mod:x-y);}
int mul(vint vec){int ans=1;for(auto x:vec)	ans*=x,ans%=mod;return ans;}

int fac[maxn],finv[maxn];
ll fpow(ll x,int y){
	ll rt=1;
	for(;y;y>>=1,x=1ll*x*x%mod) if(y&1) rt=1ll*rt*x%mod;
	return rt;
}int inv(int x){	return fpow(x,mod-2);}
void init(int n){
#if 1
	fac[0]=fac[1]=1;finv[0]=finv[1]=1;
	rep(i,2,n,1){	fac[i]=1ll*fac[i-1]*i%mod;}finv[n]=inv(fac[n]);
	per(i,n-1,1,1){	finv[i]=1ll*finv[i+1]*(i+1)%mod;}
#endif
}int C(int n,int m){
	if(n<m || n<0 || m<0)	return 0;
	return 1ll*fac[n]*finv[m]%mod*finv[n-m]%mod;
}

int w[maxn];
int f[maxn][maxn][3];
int sa[maxn];

bool Med;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);init(maxn-1);cerr<<fixed<<setprecision(3)<<(&Mbe-&Med)/1048576.0<<"MiB"<<endl;
	int n;
	while(cin>>n){
		rep(i,1,n,1)	cin>>w[i];
		rep(i,0,n,1)	rep(j,0,n,1)	rep(k,0,2,1)	f[i][j][k]=0;
		rep(v,1,n,1)	f[1][v][0]=w[v],f[1][v][1]=w[v]*(v-1)%mod,f[1][v][2]=w[v]*(v-1)*(v-1)%mod;
		rep(i,1,n-2,1){
			int pr=0;
			rep(v,0,n+1,1)	sa[v]=0;
			per(v,n,1,1)	sa[v]=sa[v+1]+f[i-1][v][0]; 
			rep(v,1,n,1){
				
				if(i!=1){
					inc(f[i][v][2],pr);
					inc(f[i][v][0],sa[v]);
					inc(f[i][v][1],sa[v]*(v-1)%mod);
					inc(f[i][v][2],sa[v]*(v-1)*(v-1)%mod);
					rep(j,0,2,1)	f[i][v][j]*=w[v],f[i][v][j]%=mod;
				}
				
				inc(f[i+1][v][0],f[i][v][1]);inc(f[i+1][v][1],f[i][v][2]);
				/*
				rep(vt,1,n,1){
					if(vt<=v){
						inc(f[i+1][vt][0],f[i][v][0]%mod);	
						inc(f[i+1][vt][1],f[i][v][0]*(vt-1)%mod);
					}	
					
					if(vt<=v)	inc(f[i+1][vt][2],f[i][v][0]*(vt-1)*(vt-1));
				}
				*/
				pr+=(f[i-1][v][1]*v%mod+f[i-1][v][2])%mod+f[i-1][v][0]*v%mod*v%mod;pr%=mod;
			}
		}
		int ans=0;	
		rep(v,1,n,1)	inc(ans,f[n-2][v][0]*(v)%mod*(v)%mod),inc(ans,f[n-2][v][1]*(v)%mod),inc(ans,f[n-2][v][2]);
		ans%=mod;
		cout<<ans<<endl;
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 0ms
memory: 3984kb

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: -100
Wrong Answer
time: 1ms
memory: 3948kb

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:

648349495
309786984
729941155
477210532
906909191
338763940
229310450
295297316
495019857
123498731
999628021
897057082
213644035
845439384
489145021
750276499
460768856
443673849
909615746
996576192
181226793
719987628
806760075
348179257
961660067
787414029
934181454
479955568
509773642
528217296
...

result:

wrong answer 1st numbers differ - expected: '901128997', found: '648349495'