随笔分类 - 搜索
摘要:好久没写oi系列的题解了 要不是为了大作业我才不会回来学这些奇怪的东西呢 本题对抗搜索就好啦 首先要分析一点,就是由于我们的黑棋每次走两步,白棋只走一步而且是白棋先走,所以除非白棋第一步吃掉黑棋,否则黑棋必胜 接下来就是计算黑棋如何取胜的问题了 首先简单介绍一下对抗搜索 我们知道,两个人下棋,两个人
阅读全文
摘要:emmmm... 做这题之前强烈推荐先去写一下压位高精度加法,压十八位就行... 然后有一个东西叫序列自动机,其实就是一个指针,用的时空找到每个字符的下一次出现位置 然后如果想找到两个字符串的所有公共子序列只需要在序列自动机上dfs即可 重点看代码:
阅读全文
摘要:裸的高斯消元解异或方程组问题 对于每个点列一个异或方程,所有影响这个点的点的对应系数为1,然后高消解一下就好 自由元用dfs处理,注意剪枝
阅读全文
摘要:还是高斯消元解异或方程组 如果这个你不会,请看这里 现在假定你已经会这个东西了 那么我们就可以构造模型了 首先有一个很显然的结论:一个开关至多只需要按一次!(因为按两次等于不按,按三次等于按一次....) 我们设一盏灯开的状态为1,关的状态为0,那么我们的目标就是把所有灯的状态都改成1 那么能影响到
阅读全文
摘要:如果不喜欢过长代码的看官,请移步其他题解... 这题其实思想极其简单: 棋盘问题常见的算法都比较暴力,常用的有搜索和状压dp 而这道题显然没啥能状压的,所以我们考虑搜索 但是仅仅搜索是不够的,因为有极大的可能搜到死... 所以我们引入记忆化 设状态f[i][j][k][0/1/2]代表目前在点(i,
阅读全文
摘要:这是一道...卡了我一个月的树形dp... 我真是太弱了... 其实仔细想想,这题的核心思路并不是特别复杂,但是的确存在不小的难度 作为一个看过全网基本所有题解+标程才弄明白这题到底怎么回事的蒟蒻,我努力把所有东西揉到一起让各位看官一眼看懂... 首先我们简化一下题意:给定一棵满二叉树,每个叶节点有
阅读全文
摘要:题意: Alice和Bob玩游戏,每人各有8张牌,牌的大小在0~4之间 每次操作,先手可以选择自己一张牌和对方一张牌求和后%5,将新的牌替代自己拿出的那张牌,以此类推,直到有一个人手中的牌全部是0,则这个人获胜 但选牌时不能选择已经为0的牌进行操作 现给定初始状态下两人的手牌以及先后手,求是否存在有
阅读全文
摘要:这题不错... 首先,不难看到他想让你求出的是最短路树 然后,考虑到所有边权均为1,所以可以采用bfs直接生成最短路树 至于方案的储存,可以在加边的时候同时记录边的编号,然后对每个点维护一个能转移他的最短路的边的编号的集合,这样总的方案数就是所有的集合大小的乘积 然后用dfs在每个集合中选一个元素输
阅读全文
摘要:一个看起来就不对的贪心居然是正解... 但仔细思考一下,这种贪心倒的确找不到反例.. 贪心思想:每次找出离根节点最远的点,然后由根节点向这个点的父节点连边,一直连到所有点都能被覆盖即可,这样构造出的一定是一个可行的最优解 正确性证明(个人YY): 主要是要证明这种做法的最优性: 首先,由于所有点都要
阅读全文
摘要:莫名互测题... 这题一看就是期望dp,可是不会转移,所以考试写50分暴力走人... 正解:期望dp+记忆华搜索 设状态f[i][j]代表聪聪在i点,可可在j点时聪聪追上可可的期望 然后用dfs更新即可,注意先预处理出最短路和tpos[i][j]表示聪聪在i点,可可在j点时聪聪走一步时会走到的位置
阅读全文
摘要:莫名其妙的变成了我们的noip互测题... 其实这题思想还是比较简单的,只是分类不好分而已 其实就是一个dfs的事 首先,非常明显,原题目中的所有关系可以抽象成一个图(这是...显而易见的吧...) 接下来,我们仅需在图上讨论即可 当然,这个图有几个部分组成其实并没有那么重要,毕竟,这些部分基本是互
阅读全文
摘要:这题太难了...看了30篇题解才整明白到底咋回事... 核心思想:状压dp+搜索+容斥 首先我们分析一下,对于一个4*7的棋盘,低点的个数至多只有8个(可以数一数) 这样的话,我们可以进行一个状压,把所有的低点压进来 然后我们从小到大枚举所有数,转移即可 记状态f[i][j]表示到了第i个数,低点的
阅读全文