这是一个好东西->作者主页
T1 组合数问题
题目大意:让你求对于每一个
n
n
n和
m
m
m,满足
0
≤
i
≤
n
,
0
≤
j
≤
m
i
n
(
i
,
m
)
0\leq i \leq n,0\leq j \leq min(i,m)
0≤i≤n,0≤j≤min(i,m)的组合数中有多少个是
k
k
k的倍数。
思路:
因为是
k
k
k的倍数,所以
m
o
d
mod
mod
k
=
0
k=0
k=0
n
,
m
n,m
n,m很小,我们可以先预处理出所有的
C
n
m
C^{m}_n
Cnm,然后套一个二维前缀和
s
u
m
sum
sum
最后输出
s
u
m
n
+
1
,
m
+
1
sum_{n+1,m+1}
sumn+1,m+1就行了。
T2 奶酪
题目大意:在一个三维空间有一个奶酪,还有一堆洞。每一个洞可能相连,有可能连接奶酪的底部,也有可能连接奶酪的上面。求能否从底部经过任意多个洞到达顶部。
思路:首先暴力对每一对洞进行连边,然后暴力跑一遍
b
f
s
bfs
bfs、
d
f
s
dfs
dfs、并查集或最短路的任意一种,最后判断即可。
T3 愤怒的小鸟
题目大意:有
n
n
n只小猪,每一只小猪有一个坐标。现在可以从原点发射一只小鸟,经过的坐标为一个二次函数。求最少发射多少只小鸟才能击中全部的猪。
思路&过程:
- 对每两只小猪求一遍二次函数,用一元二次方程求解
- 记录每一对方程的解可以击中哪些猪
- 设 d p s dp_{s} dps表示状态为 s s s时最少发射的小鸟数量
- 枚举二进制状态 s s s,表示当前击中了哪些小猪
- 枚举所有解
- 暴力转移
- 输出 d p ( 1 < < n ) − 1 dp_{(1<<n)-1} dp(1<<n)−1
提示:注意初始化和精度
T4 填数游戏
题目大意:有一个
n
∗
m
n*m
n∗m的矩阵,可以从
(
1
,
1
)
(1,1)
(1,1)出发到
(
n
,
m
)
(n,m)
(n,m)。每一个格子可以填
1
1
1或
0
0
0,但需要保证:对于一个字典序较小的序列,它的
01
01
01序列必须比字典序较大的
01
01
01序列要大。求方案总数
m
o
d
mod
mod
1
e
9
+
7
1e9+7
1e9+7。
思路:
- d p dp dp( b y by by林奆)
- 打表找出 8 ∗ 8 8*8 8∗8的所有解,然后找规律: n < m n<m n<m时, s ( n , m ) = 3 ∗ s ( n , m − 1 ) s(n,m)=3*s(n,m-1) s(n,m)=3∗s(n,m−1)
完成情况
- T1
- T2
- T3
- T4