[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

时间: 2024-10-05 06:12:01

[BZOJ] 几道比较有趣的题目的相关文章

练习题(4) -- 一道简单而有有趣的题目

PS: 因为最近一会儿用C++ 写程序,一会儿是python, 一会儿又是java,搞得我都有点语法错乱了. 题目如下:一个字符串形如 "yazyypta"  从这个字符串中删除任何字符,得到的字符串都是它的子字符串,比如对于这个字符串 "ya", "ayy", "pta" 都是它的子字符串,所有的子字符串按照字母序比较大小,求最大的大小最大的子字符串 举几个例子 1) abc c 2)    bcbxa xa 3)   ba

前几天遇到一道有趣的题目 一座楼有10层,兔子可以跳跃的层数可以为1,2或者3,那么兔子到达10层有多少种跳法并列出各种情况。

#include <iostream> using namespace std; #define MaxSize 20 struct enode { int key; enode* next; }; struct vnode { int key; enode* first; }; struct AGraph { vnode adjlist[20]; int n,e; }; int visited[11]={0}; int count=0; void Ppath(AGraph* p,int u,

总结-数学

数学 比较害怕数学题, 因为数学题一般代码比较短, 一旦想到正解往往就能AC, 但是我数学水平很洼, 知道的东西也比较少. 感觉写写暴力拿部分分比较现实. 毕竟不是每个人都能找到正解. 1. 组合数 一般用阶乘计算, 需要求逆元. 可以用lucas定理优化时间复杂度. 组合类的问题就要考虑组合数 1. BestCoder-Round#33 第二题是组合数的题目 2. BZOJ-1005-明明的烦恼 用组合数阶乘公式推导出最后的式子 3. BZOJ-1951-古代猪文-SDOI2010-费马小定理

-----------------------【有趣の题目】-----------------------

做过的,有意义多次看的,有趣的题目整合包 图论相关: [BZOJ-3308]九月的咖啡店   线性筛素数+有趣的处理+最大费用最大流 [BZOJ-4205]卡牌配对   线性筛素数+最大流+玄学的效率 [BZOJ-2095]Bridge   混合图欧拉回路 [BZOJ-1797]Mincut 最小割    最大流+Tarjan+缩点+分类讨论 [BZOJ-2879]美食节    最小费用最大流+拆点+动态建图 [BZOJ-1061]志愿者招募   线性规划转最小费用最大流 [BZOJ-2118]

BZOJ 题目整理

bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份翻转后的序列,直接上AC自动机即可.注意特判 1125:hash+splay 1183:digit-product只可能是2,3,5,7的积,枚举digit-product进行dp即可 1301:每个点和每个边只能被删除一次,随便搞 1313:上下界最大流 1471:考虑容斥,枚举两条路径相交的位置

项目中的有趣题目 -- 吃饺子问题

题目描述: 近日,项目中偶遇一个有趣的题目,感慨多多,备忘之.抽象出来,大致是: 桌上一共有100个饺子,其中有10个饺子包了硬币,问:连续吃到硬币的期望次数是多少次? 首先,定义一下这里的连续,如果我们将吃饺子的顺序抽象为一个100位的二进制数.并且吃到饺子表示为1,没吃到则为0,那么: 如果一次和第二次吃到,那么可表示为: 110.....,那么这里的连续吃到的次数为1. 如果数字为: ...1111.... ,那么这里连续的4个1表示3次连续,也就是说只要连续,就算1次. 期望次数,也就是

《算法概论》第八章的一些课后题目 关于NP-Complete Problem

8.3 STINGY SAT STINGY SAT is the following problem: given a set of clauses (each a disjunction of literals) and an integer k, find a satisfying assignment in which at most k variables are true, if such an assignment exists. Prove that STINGY SAT is N

二叉树的有趣问题

近期看了一下hihocoder,那里面有一个很有趣的题目,就是给出二叉树的前序遍历结果,然后给出中续遍历的结果,最后求出后续遍历的结果,我觉得这个题目很有趣,然后刚好那里有提示,先给出一个图吧 那么这个图的前序遍历(TLR)结果是 ABDEGHCFIJ 中续遍历(LTR)结果是 DBGEHACIJF 后续遍历(LRT)得到的结果 DGHEBJIFCA 因为前序访问得到的序列是 访问根节点+访问左子树+访问右子树 那么得到中序访问的序列是 访问左子树+访问根节点+访问右子树 那么前序序列的第一位肯

【BZOJ】【4002】【JLOI2015】有意义的字符串

构造线性递推式+矩阵乘法 题解戳PoPoQQQ 为了自己以后看的方便手打一遍好了>_> 求$( \frac{b+\sqrt{d}}{2} )^n$的整数部分对p取模后的值 其中$b\mod 2=1,d\mod 4=1,b^2 \leq d<(b+1)^2,n\leq10^{18}$ 思路: 构造数列$a_n=b*a_{n-1}+\frac{d-b^2}{4}*a_{n-2}$ 其中$a_0=2,a_1=b$ 然后我们求出这个数列的通项公式,得到$a_n=(\frac{b+\sqrt{d}