Blog of RuSun

\begin {array}{c} \mathfrak {One Problem Is Difficult} \\\\ \mathfrak {Because You Don't Know} \\\\ \mathfrak {Why It Is Diffucult} \end {array}

P2561 [AHOI2002]黑白瓷砖

P2561 [AHOI2002]黑白瓷砖

考虑 Pólya定理 ,考虑所有操作:

  • 不变,循环组数为 $n$ ;
  • 旋转:两种旋转操作,循环组数为 $\left \lceil \frac n 3 \right \rceil$ ;
  • 翻转:中间 $\left \lceil \frac n 2 \right \rceil$ 是不动的,剩下的两两一组。

颜色为 $2$ 种,直接上 Pólya定理 。注意高精,直接上 py 打表。

查看代码
1
2
3
4
5
6
7
8
9
10
11
12
n=int(input())
m=n*(n+1)//2
t=2**m
c=0
for i in range(1,n+1):
c+=(i+1)//2
t+=2**c
if n%3==1:
t+=2*((2**((m-1)//3+1))+(2**((m-4)//2+3)))
else:
t+=2*((2**(m//3))+(2**c))
print(t//6)