摘要: 从n个不同元素中不重复地取出m(1≤m≤n)个元素在一个圆周上,叫做这n个不同元素的圆排列。如果一个m-圆排列旋转可以得到另一个m-圆排列,则认为这两个圆排列相同。 特殊情况可以这么理解,除个n就好了,为啥除个n呢,因为每个元素都可以当一次开头,除掉就把形成圆周之后重复的情况排除掉了 怎么枚举呢? 阅读全文
posted @ 2018-09-11 20:24 静听风吟。 阅读(1057) 评论(0) 推荐(0) 编辑
摘要: 以前认为负数不可做 只需要多开点儿空间维护一下负数就好了 桶排序的时候你必须保证数据是离散的,离散程度是均一的 而且数据范围不能让空间无法承受 阅读全文
posted @ 2018-09-11 20:11 静听风吟。 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 精确覆盖问题:在一个0-1矩阵中,选定部分行,使得每一列都有且只有一个1。求解一种选法 舞蹈链(Dance Link),也就是一个循环十字链表,可以快速的删掉和恢复某行某列 结合了舞蹈链的搜索就称作DLX算法 这里贴一个用DLX算法解决16×16数独的代码 9×9的直接暴力会更好 阅读全文
posted @ 2018-09-11 20:04 静听风吟。 阅读(1615) 评论(0) 推荐(0) 编辑
摘要: 目的是寻找最优的方案使得自己能够利益最大化。 基本思想就是假设自己(A)足够聪明,总是能选择最有利于自己的方案,而对手(B)同样足够聪明,总会选择最不利A的方案 对抗搜索就是对于先手来说,取后手中状态最大的;对于后手来说,取终态中状态最小的 对于第一个人 它一定从当前局面可以到达的所有局面中,选择一 阅读全文
posted @ 2018-09-11 19:51 静听风吟。 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 倒水问题就是最典型的状态空间搜索了 所谓的状态空间搜索我可以理解为,设定好起始条件,结束条件 中间的过程是瞎搜 也就是状态是一个隐式图 有两个无刻度标志的水壶,分别可装 x 升和 y 升 ( x,y 为整数且均不大于 100 )的水。 设另有一水 缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶间 阅读全文
posted @ 2018-09-11 19:35 静听风吟。 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 之前有一篇博文有介绍枚举又重复元素的排列,这里先介绍一下怎么正常枚举有重复元素的组合 首先先来一个仅支持不同元素的枚举组合的程序 多年前的知识宝藏 然而错了好几次才写出来 然后我魔改了一个枚举有重复元素组合的程序,直接哈希判重了 脑子实在是转不动了 应该是对的,效率那是十分底下 阅读全文
posted @ 2018-09-11 19:30 静听风吟。 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 已知一棵二叉树的前序和后序遍历,不一定能重建唯一的二叉树呢? 原因在于,当一个根只有一颗子树时,通过前序遍历和后序遍历,无法确定该子树是这个根的左子树还是右子树 abdegcf,dgebfca 单子树的个数通过判定前序除了第一个根节点a外其他字母的前一个字母 和后序除了最后一个根结点a外其他字母的后 阅读全文
posted @ 2018-09-11 19:04 静听风吟。 阅读(834) 评论(0) 推荐(0) 编辑
摘要: 使用普通的DFS可能会让你把时间浪费在深度非常大而且答案不是最优的搜索过程上 些问题搜索时可能会存在搜索很深却得不到最优解的情况 那么我们就给搜索设置一个约束,当搜索深度达到约束值却还没找到可行解时结束搜索 如果我们在一个深度约束下没有搜索到答案,那么答案一定在更深的位置,那么就把约束深度调整到更深 阅读全文
posted @ 2018-09-11 18:59 静听风吟。 阅读(863) 评论(0) 推荐(0) 编辑
摘要: 判断第k短路的权值是否小于T 直接把队友的代码拿过来了,一定很经典 阅读全文
posted @ 2018-09-11 14:34 静听风吟。 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 启发式搜索只能深搜 一般也是用来解决最优解问题的 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。 在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初始的棋盘,怎样才能经过移 阅读全文
posted @ 2018-09-11 14:31 静听风吟。 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 这种搜索仅限于解决起始状态和结束状态可以互换的问题之中,也就是从头搜到尾和从尾搜到头是等价的 移动一个只含字母A和B的字符串中的字母,给定初始状态为(a)表,目标状态为(b)表,给定移动规则为:只能互相对换相邻字母。请找出一条移动最少步数的办法 NKOJ1688移字母游戏 一通好找啊 阅读全文
posted @ 2018-09-11 14:27 静听风吟。 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 交题应该是交过了,只不过网络赛的题没刷过去不知道什么原因 这份板子总体来说还是很漂亮的 阅读全文
posted @ 2018-09-11 14:07 静听风吟。 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 这种动归有很多名字,插头DP是最常见的 还有基于连通性的动态规划 轮廓线动态规划等等 超小数据范围,网格图,连通性 可能算是状态压缩DP的一种变式 以前我了解的状压DP用于NP难题的小数据范围求解 这里说一下哈密顿回路的概念: 然后是一道插头DP的入门题 一个网格图中有若干障碍格子,求其他格子的哈密 阅读全文
posted @ 2018-09-11 13:57 静听风吟。 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 从来没有用过,这个貌似可以替代个什么东西? 目前我知道读入挂是不能处理未知元素个数的题目的 不过那种题目一般用不到读入挂,仅在大型数据结构题目中使用 阅读全文
posted @ 2018-09-11 13:47 静听风吟。 阅读(377) 评论(0) 推荐(1) 编辑
摘要: 这样就好了 还有强行开O2 O1提供基础级别的优化 O2提供更加高级的代码优化,会占用更长的编译时间 O3提供最高级的代码优化 阅读全文
posted @ 2018-09-11 13:44 静听风吟。 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 之前做过的传纸条那道题就是双重动态规划的典型应用,题意就不描述了,直接贴一下以前写过的,经典代码 我记得当时写过记忆化+dp的,这里不贴了 Codevs1444 把歌曲分堆,然后各自求最优装载,分别用01背包算法。 由于不知道如何分堆才会产生最优解,所以第一次动态规划算出每个区间段的最优装载,然后第 阅读全文
posted @ 2018-09-11 13:37 静听风吟。 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 对于1D/1D动态规划来说,理论时间复杂度都是O(n^2)的,这种动态规划一般都可以进行优化,贴一篇文章 https://wenku.baidu.com/view/e317b1020740be1e650e9a12.html 这里介绍最简单的一种,LIS的求法 其实就是二分,找单调性来二分 HDU19 阅读全文
posted @ 2018-09-11 13:27 静听风吟。 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 普通的树有n个点和n-1条边 如果在这个的基础上添加一条边,就变成了基环树 对它进行dp的时候,考虑删除一条边转换成普通树 对于每一棵环套树,先dfs找环 找到环以后断环为链并将断开的两个点强制其中一个点为根且不选做一次树形DP,对另一个点做同样操作 取两次结果最大值加入ans BZOJ1040的题 阅读全文
posted @ 2018-09-11 13:19 静听风吟。 阅读(674) 评论(0) 推荐(1) 编辑