这是一个好东西->作者主页
T1 鸡腿の树荫
题目大意:给你一段数,每次清空[L,R]区间的数,求每次清空后还剩多少个数。
思路:
- 线段树:用线段树维护区间,利用 l a z y lazy lazy数组来标记这段区间是否清空。
- 暴力:用 a i a_i ai记录离他最近的没有清空的数的位置,然后直接模拟。
T2 Sum the Square
题目大意:给你若干对数,每一对数的数 A A A和数 B B B分别进行 操作 后可以相同。求最少操作次数+2。
思路:直接模拟。经过打表发现,不管怎么操作最终都只会出现两个环,直接判断即可。
T3 TheNumberGame
题目大意:
A
l
i
c
e
Alice
Alice和
B
o
b
Bob
Bob玩游戏,给定一个数,
A
l
i
c
e
Alice
Alice先手,可以让这个数减去它的任何一个因数(除了1和本身),不能操作视为失败,求谁会赢。
思路:
30
30
30%数据
我们不难发现,如果当某个人先手时,只要他的可行解中有一个是这个人必胜,那么这种情况就是这个人必胜。所以,我们可以建立一棵博弈树,再用数组记录答案,每次枚举当前的数的因数并减掉它搜索,到了这个数是质数时就为输,求出答案即可。
100
100
100%数据
通过打表得知只要是
2
2
2x
4
n
4^n
4n的数都是
B
o
b
Bob
Bob赢,其他的奇数
B
o
b
Bob
Bob赢,反之
A
l
i
c
e
Alice
Alice赢。所以直接打暴力就行了。
如何证明
我们知道,2是Bob赢。那么,到了4时Alice绝对先选择变成2,这样Alice就赢了。到了8时,Bob又可以操作数变成4,Bob又赢了。以此类推,由于Alice先手,所以2x4n的数绝对是Bob赢。
T4 Mixing Chemicals
题目大意:让你把
n
n
n个瓶子放进
k
k
k个盒子里,第
i
i
i个盒子不能和第
c
i
c_i
ci个盒子放在一起。求方案个数
m
o
d
mod
mod
1
0
9
+
7
10^9+7
109+7后输出。
思路:
- 暴力模拟,10分。
- 考虑建图。具体操作如下:
- 如果建完图后无环,则直接树形 d p dp dp,因为相连的两个点不能放在同一个盒子里,所以方案数排除这个情况。
- 如果建完图后有环,则用并查集判断,在哪一条边出现了环,把他们记录下来,在树形 d p dp dp中把下面的点定住为1,再去操作。最后把所有记录过的答案乘起来就行了。
- 如何设 d p dp dp。设 d p i , j dp_{i,j} dpi,j表示当前是第 i i i个点,放进了第 j j j个盒子里,所有都不冲突的方案数。那么, d p i , j dp_{i,j} dpi,j=所有 s u m s o n − d p s o n , j sum_{son}-dp_{son,j} sumson−dpson,j的乘积,其中 s u m i sum_i sumi表示所有 d p i , j dp_{i,j} dpi,j的和。如果 i i i没有儿子,则所有 d p i , j dp_{i,j} dpi,j都设为1。
完成情况
- T1
- T2
- T3
- T4