BZOJ-几道比较有趣的题目

题目一

描述

BZOJ 1008: [HNOI2008]越狱
监狱有连续编号为1…N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱


分析

  • 如果直接求的话十分复杂, 而且貌似还要考虑容斥?
  • 这个问题的关键就是转化一下, 求不能发生越狱的状态数, 这个比较好求, 再用总的状态数剪掉即可.

代码

https://code.csdn.net/snippets/615408


题目二

描述

BZOJ 2463: [中山市选2009]谁能赢呢?
小明和小红经常玩一个博弈游戏。给定一个n×n的棋盘,一个石头被放在棋盘的左上角。他们轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?


分析

  • 一开始不明白为什么只是简单的和奇偶性有关系. 找了一些题解发现解释的最清楚的应该是用放骨牌的方法.
  • 任何时候, 小明走一步, 小红走一步, 加起来走了两个格子, 就相当于放了一张2*1的骨牌. 交替的走就相当于交替放置骨牌. 如果n是偶数, 那么一定可以将棋盘铺满骨牌. 先走的就输了. 同理n是奇数的话, 一定有一个空格放不上骨牌, 后走的就输了.

代码

https://code.csdn.net/snippets/615410


题目三

描述

BZOJ 1800: [Ahoi2009]fly 飞行棋
给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。


分析

  • 找对角线, 这条对角线一定是圆的直径. 如果有x条对角线的话, 两两组合成矩形, 总个数就是x*(x-1)/2.
  • 如何求一个点有没有对角线相连
    到这个点的弧长是圆周长的一半的话连线就是对角线.

代码

https://code.csdn.net/snippets/615411


想说的话

  • 也许很多人都认为这些题目太水了吧.
  • 我只想说虽然代码都很短, 思路不复杂, 但想到正解尤其是写起来简单的方法并没有那么容易. 至少要想一想.
  • 只要能给自己一些启发的题目, 都不是水题.
  • 想起班里的一位大神, 即使看起来再简单的题目也会告诉你 : 有难的地方

@感谢提供者 : wxjlzbcd

posted @ 2015-03-09 23:53  wfwbz  阅读(173)  评论(0编辑  收藏  举报