题解:
这道题真tm恶心啊。
颜色数小就直接斯坦树了,颜色大的话则考虑给每个颜色随机映射到 [ 1 , K ] [1,K] [1,K]的颜色中,这样的正确率就是 K ! K K \frac{K!}{K^K} KKK!,概率大概在0.006。多随机几百次就过了。
#include <bits/stdc++.h>
using namespace std;
const int RLEN=1<<18|1;
inline char nc() {
static char ibuf[RLEN],*ib,*ob;
(ib==ob) && (ob=(ib=ibuf)+fread(ibuf,1,RLEN,stdin));
return (ib==ob) ? -1 : *ib++;
}
inline int rd() {
char ch=nc(); int i=0,f=1;
while(!isdigit(ch)) {
if(ch=='-')f=-1; ch=nc();}
while(isdigit(ch)) {
i=(i<<1)+(i<<3)+ch-'0'; ch=nc(