T1
题目大意
给N*M的网格图染色,问有多少种方案,使得任意一个h*w的矩阵中,黑色格子数量恒等。 N,M≤109,h,w≤4 N , M ≤ 10 9 , h , w ≤ 4
题解
举例来说如果h=w=4,只要满足:
a[x][y]+a[x+4][y+4]=a[x+4][y]+a[x][y+4]
a
[
x
]
[
y
]
+
a
[
x
+
4
]
[
y
+
4
]
=
a
[
x
+
4
]
[
y
]
+
a
[
x
]
[
y
+
4
]
∑4i=1a[x][i]−a[x+4][i]=0
∑
i
=
1
4
a
[
x
]
[
i
]
−
a
[
x
+
4
]
[
i
]
=
0
,列同理
即可
对x,y%4意义下分类考虑
那么注意到一个性质,对于
x,y≤4
x
,
y
≤
4
,必然有:
a[x][y]=a[x+4][y]=a[x+8][y]...,or a[x][y]=a[x][y+4]=a[x][y+8]=...
a
[
x
]
[
y
]
=
a
[
x
+
4
]
[
y
]
=
a
[
x
+
8
]
[
y
]
.
.
.
,
o
r
a
[
x
]
[
y
]
=
a
[
x
]
[
y
+
4
]
=
a
[
x
]
[
y
+
8
]
=
.
.
.
证明是这样的,首先讨论一下,不难发现a[x][y]=a[x+4][y]或者a[x][y]=a[x][y+4]是成立的,同时,如果在某一个方向延伸的时候(例如)从1变成0了,那么(例如是横向)下面两个位置就必须是1和0,并且这个1之前的位置也都是1,那么就可以得到纵向都要是两列1的结论,证完。
于是我们暴力枚举每个数字是向哪里相等即可,这二者独立,组合数即可。
为了避免重复计数,应当容斥,可以子集和变换,也可以不用,复杂度
O(2hw(h+w)2)
O
(
2
h
w
(
h
+
w
)
2
)
T2
题目大意
给你n种物品,每种物品无限个,记f(m)表示恰好装满m的方案数,求 ∑Ri=Lf(i),n≤10,∏ai≤105,R≤1017 ∑ i = L R f ( i ) , n ≤ 10 , ∏ a i ≤ 10 5 , R ≤ 10 17
题解
首先有这样一个结论,令 L=LCM(Ai) L = L C M ( A i ) ,那么对于相同的k,有 f(iL+k) f ( i L + k ) 是关于i的N次多项式,然后要求这个东西的前缀和,那么就是一个N+1次的多项式,暴力之后拉格朗日差值即可。
T3
题目大意
构造一个DAG,点数不超过50,边数不超过100,使得合法的拓扑序恰好有x个,x不超过32767。
题解
略