(A. Range Product)
简要题意:
计算 (prod_{i=A}^{B} i)的正负号。
题目解法:
只要对负数范围做一做,入门难度,不写了。
(B. Box and Ball)
简要题意:
有(N)个盒子,第一个盒子中有一个红球,其他的都有一个蓝球。
有(M)次操作,每次操作选两个盒子(i)和(j),在(i)中随机选一个球放到(j)中。
问最后红球可能在那些盒子。
题目解法:
注意到我们是可以模拟出每一步之后每一个盒子的球数的。
思考模拟的过程,只要在加上可不可能存在红球这个信息就好了。
(C. Knot Puzzle)
简要题意:
有(N)段木头,首尾相接在一起,每一段长度是(l_i)。
每次可以选一个总长不小于(L)的一个连续段,选其中一个交界处砍断。
问能否把(N-1)个都砍断。
题目解法:
如果有解,那么一定存在一个(i),使得(l_i + l_{i+1} ge L)。
那么我们就让这两个的交界最后砍,剩下的从两边开始,一定都能砍完。
否则显然不行。
(D. Stamp Rally)
简要题意:
一张连通图,(Q)次询问。
每次询问从两个点(x)和(y)出发,希望经过的点(不重复)数量等于(z),经过的边最大编号最小是多少。
题目解法:
题意伤。。。注意题目说的是有两个出发点,不规定终止点。。。
好的,那么我们对于每次询问,二分一个边的最大编号,那么就要求在这个子图中,(x)和(y)所在的联通块的并集的大小不小于(z),这个可以用并查集做。
多次询问用整体二分就可以了,不过并查集要用按秩合并,支持撤销。
(E. Candy Piles)
简要题意:
桌上有(N)堆糖果,第(i)堆糖果有(A_i)个糖。
两人在玩游戏,轮流进行,每次进行下列两个操作中的一个
- 将当前最大的那堆糖果全部吃完
- 将每堆糖果吃掉一个
吃完的人输,假设两人足够聪明,问谁能必胜。
题目解法:
按照(A_i)从大到小排序,就构成了一个楼梯形状。
那么两种操作就相当于删掉最下面一行或最左边一列。
对应到坐标系上就是从左下角开始,每次向右或向上走,走出边界就算输。
这个东西可以先打表,发现除了边界那一圈,剩下的都是(SG_{x,y}=SG_{x+1,y+1})。
那么我们就只要求出边界上一个点的(SG)就好了,这个扫一遍就行。
(F. Leftmost Ball)
简要题意:
给你(N)种颜色的球,每个球有(K)个。
把这(N imes K)个球排成一排,把每一种颜色的最左边出现的球涂成白色(初始球不包含白色)。
求有多少种不同的颜色序列。
题目解法:
凭直觉,先特判掉(K=1)。
合法的序列一定满足任意一个前缀,白色格子的数目不小于颜色数。
所以我们可以据此设计一个(DP),考虑对一种一种的颜色计数:
设(dp[i][j])表示序列中已经安排了(i)个白色格子,除了白色,还有(j)种颜色的方案数。
转移就两种:
- 新添一个白色格子。
- 放置一种颜色的剩下(K-1)个格子。
具体转移要乘一个组合数,也挺好打的。