A. Linear Keyboard
题解
根据题意模拟即可。
代码
Java
C++
B. Odd Grasshopper
题解
不难发现,每4次跳跃之后一定会回到原点。
以$x_0$为奇数为例:$x_1=x_0+1$必为偶数。$x_2=x_1-2$也是偶数。$x_3=x_2-3$必为奇数。$x_4=x_3+4$必为奇数,且$x_4=x_0$。
代码
Java
C++
C. Minimum Extraction
题解
因为每次操作都是对所有数做相同的改变。所以每次选中的最小值是按照一开始的从小到大的顺序依次选取的。
所以只需要排序后依次模拟计算即可。
代码
Java
C++
D. Blue-Red Permutation
题解
考虑如下图所示的某个“Yes”的颜色分布情况。我们不难发现,一定可以通过继续对3和7做操作已得左边全是蓝色,右边全是红色的情况。
因此,我们只需要把蓝色和红色分别排序之后,依次放到最左边和最右边即可。过程中,我们如果发现有逆行的,就说明一定无解,输出No即可。
代码
Java
C++
E. Robot on the Board 1
题解
我们从(1,1)出发,按照命令执行即可。执行过程中,我们记录所访问到的点的范围。一旦发现范围超过了n和m,那么就停止执行。
代码
Java
C++
F. Robot on the Board 2
个人很不推荐这个题目。如果你没有AC这个题目,建议直接跳过本题。
G. Banquet Preparations 1
我们可以根据m的值计算出每道菜中a的取值范围,进而就可以根据剩下的总重量来决定a的值。
H. Banquet Preparations 2
和G题类似,根据a的取值范围,我们发现如果两个a的值域不相交,则必然是两个不同的菜。因此离散化即可。