BZOJ-几道比较有趣的题目
生活随笔
收集整理的這篇文章主要介紹了
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
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的BZOJ-几道比较有趣的题目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CH-Round-#63-OrzCC杯#
- 下一篇: BZOJ-1005-明明的烦恼