QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#842049#9970. Looping RPSucup-team1004#WA 2ms12328kbC++202.5kb2025-01-04 09:53:322025-01-04 09:53:33

Judging History

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

  • [2025-01-04 09:53:33]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:12328kb
  • [2025-01-04 09:53:32]
  • 提交

answer

#include<bits/stdc++.h>
#define Gc() getchar()
#define Me(x,y) memset(x,y,sizeof(x))
#define Mc(x,y) memcpy(x,y,sizeof(x))
#define d(x,y) ((m)*(x-1)+(y))
#define R(n) (rnd()%(n)+1)
#define Pc(x) putchar(x)
#define LB lower_bound
#define UB upper_bound
#define fi first
#define se second
#define eb emplace_back
#define all(x) x.begin(),x.end()
using namespace std;using ll=long long;using db=double;using lb=long db;using ui=unsigned;using ull=unsigned long long;using pii=pair<int,int>;
const int N=3e6+5,M=(1<<8)+5,K=1000+5,mod=1e9+7,Mod=mod-1;const db eps=1e-9;const int INF=1e9+7;mt19937 rnd(28382);
#define Tp template<typename T>
#define Ts template<typename T,typename... Ar>
namespace Debug{
	Tp void _debug(char* f,T t){cerr<<f<<'='<<t<<endl;}
	Ts void _debug(char* f,T x,Ar... y){while(*f!=',') cerr<<*f++;cerr<<'='<<x<<",";_debug(f+1,y...);}
	#ifdef LOCAL
	#define gdb(...) _debug((char*)#__VA_ARGS__,__VA_ARGS__)
	#else 
	#define gdb(...) void()
	#endif
}using namespace Debug;
int n;
char s[N];
ll ans=0;
namespace Trie{
	int son[N][3],cnt=1,siz[N],f[N],sum[N];
	void add(char *s){
		int len=strlen(s+1);
		for(int i=1;i<=len;i++) s[i+len]=s[i];
		for(int i=1;i<=2*len;i++){
			if(s[i]=='P') s[i]=0;
			else if(s[i]=='N') s[i]=1;
			else s[i]=2;
		}
		int x=1;
		for(int i=1;i<=2*len;i++){
			if(!son[x][s[i]]) son[x][s[i]]=++cnt;
			x=son[x][s[i]];
		}
		siz[x]++;
	}
	int st[N],sh=-1;
	int pre[N][3],nt[N];
	void dfs(int x){
		st[++sh]=x;
		if(sh){
			Mc(pre[sh-1],pre[nt[sh-1]]);
			if(sh>1){
				nt[sh]=pre[sh-1][s[sh]]+1;
			}else Me(pre[0],0);
			pre[sh-1][s[sh]]=sh-1;
		}
		if(sh>1){
			int p=sh-nt[sh];
			gdb(p);
			if(p*2<=sh){
				if(p*5<=sh) f[x]=f[st[sh-p]]+siz[st[(sh-1)/p*p]];
				else for(int i=p;i<sh;i+=p) f[x]+=siz[st[i]];
			}
			if(sh==5) gdb(p,f[x]);
		}
		sum[x]=siz[x];
		if(count(son[x],son[x]+3,0)<2){
			for(int &i:son[x]) if(!i) i=++cnt;
		}
		for(int i:{0,1,2}) if(son[x][i]){
			s[sh+1]=i;
			dfs(son[x][i]);
			sum[x]+=sum[son[x][i]];
		}
		ans+=1ll*sum[son[x][0]]*sum[son[x][1]]*sum[son[x][2]];
		ans+=1ll*f[son[x][0]]*sum[son[x][1]]*sum[son[x][2]];
		ans+=1ll*sum[son[x][0]]*f[son[x][1]]*sum[son[x][2]];
		ans+=1ll*sum[son[x][0]]*sum[son[x][1]]*f[son[x][2]];
		sh--;
	}
}
void Solve(){
	scanf("%d",&n);
	while(n--){
		scanf("%s",s+1);
		Trie::add(s);
	}
	Trie::dfs(1);
	printf("%lld\n",ans);
}
int main(){
	int t=1;
	// scanf("%d",&t);
	while(t--) Solve();
	cerr<<clock()*1.0/CLOCKS_PER_SEC<<'\n';
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 12248kb

input:

6
P
PN
KK
N
PKK
PN

output:

6

result:

ok 1 number(s): "6"

Test #2:

score: 0
Accepted
time: 0ms
memory: 12244kb

input:

10
KKKNP
KNKPPKNK
KNKPP
KNKPPKN
KKKN
NNKNNNKNNNKNNNKNNNKNNNKNNNKNNPN
NNKN
NPPN
NNKNNNKNNNKNNNKNNNKNNNKNNNK
KKKNN

output:

3

result:

ok 1 number(s): "3"

Test #3:

score: 0
Accepted
time: 2ms
memory: 12180kb

input:

10
NNNPNNNPNNNPNNNK
KKN
NNNP
KKP
NNNPNNNPNNNPN
KKNKKNKKPN
KNNPNPNKKKNPPKNKKKNKNKKNKPPPNKKPKP
KKPK
KKNKKNK
KKPKKN

output:

3

result:

ok 1 number(s): "3"

Test #4:

score: 0
Accepted
time: 0ms
memory: 12184kb

input:

10
K
PPPNNPPPNNPPPNNPPPNNPPPNNPPPNNPPPNNPPPNNP
PPKP
PPPNNPPPNNPPPNNPPPNNPPPNNPPPNNPPPNNPPPNNPPPK
P
K
N
P
PPPNN
N

output:

25

result:

ok 1 number(s): "25"

Test #5:

score: 0
Accepted
time: 0ms
memory: 12224kb

input:

10
NPNKP
NNNNKNNNNPP
PPKPNNNNPNKKKN
NPNKPNP
NNNNKN
NNNNK
NKNPKKPNPKKNPNKN
NKNPKKPNPKKNPNK
NKNPKKPNPKKNP
NPNKPNPN

output:

30

result:

ok 1 number(s): "30"

Test #6:

score: 0
Accepted
time: 0ms
memory: 12236kb

input:

10
KPKKPKKPKKPKKP
KPKKPKKPKKPKKPKNK
PNPNP
KPK
PN
NPNPNNPNPNK
NKKPKKPKPPKKPKKKKPKNKPPKPPNKNP
NPNPNNP
PNPNPK
NPNPN

output:

39

result:

ok 1 number(s): "39"

Test #7:

score: 0
Accepted
time: 0ms
memory: 12236kb

input:

4
KKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPK
NN
KKP
KKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKPKKNK

output:

1

result:

ok 1 number(s): "1"

Test #8:

score: 0
Accepted
time: 2ms
memory: 12244kb

input:

7
KPKN
KPKNKPKNKPKNKPKK
NKPPNNNPKKNN
KPPKPKPPKPKPPKPKPPKPKPP
KPKNKPKNKPKNKP
KPPKP
KPPKPKPPKPKPPKPKPPKPKPPKPN

output:

2

result:

ok 1 number(s): "2"

Test #9:

score: 0
Accepted
time: 0ms
memory: 12104kb

input:

10
NKNNKNKN
KPKN
PKPN
PNNNNNNKKNNPNNKNPPKPPNPNPPKKKPNNNPNPKKNK
PKPNPKP
PKPNPK
KPKNKP
NKNNKNKNNKNPN
KPKNKPK
NKNNK

output:

39

result:

ok 1 number(s): "39"

Test #10:

score: 0
Accepted
time: 0ms
memory: 12224kb

input:

300
NKNPNK
NKKNKK
KPPNPN
KKPNKNK
PKKNPKP
KPKPPPN
NNKPPNN
NPKPPKN
KNNKKPK
PPPNPKK
NKPKNP
KPKNNPP
NNPKNP
PNPPPKN
PKKPNP
PPNNKK
PKNKNK
PKNPNK
NKNPNPP
KNKNNPN
NKPPPPK
NNPPKKN
KNKKNPK
KKNNPKN
PPPKNK
NPPPPPP
NKKPKPP
KNKNPPK
KPKPNNK
NPNNKN
PNPNKP
PNPKKP
KKKKPKN
NNNKNPK
NPNKPNK
NNNKNK
PPKKNKP
NNNKPPK
KPNKPP...

output:

1102940

result:

ok 1 number(s): "1102940"

Test #11:

score: 0
Accepted
time: 0ms
memory: 12276kb

input:

91
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKN
KKKKKKKKP
PNPKPPNP
KKKN
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKN
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKP
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKN
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKP
KKKKKKKKKKKKKKKKKKKKKKN
KKKKKKKN
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKP
KKKKKKKKKKKKP
...

output:

2151

result:

ok 1 number(s): "2151"

Test #12:

score: 0
Accepted
time: 2ms
memory: 12328kb

input:

72
PKPPKPPKPPKPPKPPN
PKP
NNNNNK
NPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNPNNP
NNPNNPNNPNNPNNPNNK
NP
PPPPPPN
PKPPKPPKPPKPPKPP
PPPPKPP
PPK
NNNNNPP
NNNNPNNNNPNNNNPN
KPNNNKKPPKPKKNPPKKNNKPKPKPKPPPKPPKPNNKPPKPPPNNNKKNNPKKKKKN...

output:

14794

result:

ok 1 number(s): "14794"

Test #13:

score: -100
Wrong Answer
time: 0ms
memory: 12292kb

input:

91
PKKK
KKKNKKKKNKKKKNKK
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPKP
PPPPNPPPPNPPPPNPPPPNPPPPK
PPPPNNPPPPPNNPPPPPNNPPPPPNNPPPPK
NKNKNKNKN
PNPPNPKPPNPPN
NPKNPKNPKNPKNPKNPKNPKNPKNP
PNPPNPKPPNP
KKPK
KKKKKNKKKKKKNKKKKKPN
NPK
PPNKPPKPPNKPPPNKPPK
KKP
PNPPNPPNPPNPKK
PPPPPPNPPPPPPNPPPPPPNPPPPPPK
PPPPPPNPPP...

output:

24756

result:

wrong answer 1st numbers differ - expected: '24738', found: '24756'