题目一
描述
BZOJ 1008: [HNOI2008]越狱
监狱有连续编号为1…N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱
分析
- 如果直接求的话十分复杂, 而且貌似还要考虑容斥?
- 这个问题的关键就是转化一下, 求不能发生越狱的状态数, 这个比较好求, 再用总的状态数剪掉即可.
代码
题目二
描述
BZOJ 2463: [中山市选2009]谁能赢呢?
小明和小红经常玩一个博弈游戏。给定一个n×n的棋盘,一个石头被放在棋盘的左上角。他们轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?
分析
- 一开始不明白为什么只是简单的和奇偶性有关系. 找了一些题解发现解释的最清楚的应该是用放骨牌的方法.
- 任何时候, 小明走一步, 小红走一步, 加起来走了两个格子, 就相当于放了一张2*1的骨牌. 交替的走就相当于交替放置骨牌. 如果n是偶数, 那么一定可以将棋盘铺满骨牌. 先走的就输了. 同理n是奇数的话, 一定有一个空格放不上骨牌, 后走的就输了.
代码
题目三
描述
BZOJ 1800: [Ahoi2009]fly 飞行棋
给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。
分析
- 找对角线, 这条对角线一定是圆的直径. 如果有x条对角线的话, 两两组合成矩形, 总个数就是x*(x-1)/2.
- 如何求一个点有没有对角线相连
到这个点的弧长是圆周长的一半的话连线就是对角线.
代码
想说的话
- 也许很多人都认为这些题目太水了吧.
- 我只想说虽然代码都很短, 思路不复杂, 但想到正解尤其是写起来简单的方法并没有那么容易. 至少要想一想.
- 只要能给自己一些启发的题目, 都不是水题.
- 想起班里的一位大神, 即使看起来再简单的题目也会告诉你 : 有难的地方
@感谢提供者 : wxjlzbcd
时间: 2024-10-05 06:12:01