随笔分类 - 题目
摘要:迭代加深 迭代加深是用于优化搜索的,因为dfs的过程中是选择搜索的一个分支,不断地深入,直到我们达到递归的边界时才会返回。这样的话,如果搜索树的分支比较多,但答案在比较浅的分支节点时,一旦我们选择了错误的搜索分支,我们就会在错误的分支上搜索到很深的深度从而浪费搜索的时间。而迭代加深就是为了解决这一问
阅读全文
摘要:剪枝 剪枝是搜索中很重要的一个环节, 尽早排除搜索树中不必要的分支。 优化搜索顺序 优先搜索分支数量较小的节点 排除等效冗余 比如从n个物品选m个物品,选1,2和选2,1是一样的,这样我们只需要遍历其中一个即可,如果不考虑顺序的话尽量按组合的顺序搜索 可行性剪枝 当我们搜索状态在进行中发现不合法了就
阅读全文
摘要:这是一道dp的题,好像也不算dp。需要递推,感觉能训练思维!!!很棒的一道题。 覆盖墙壁 关于这道题的分析 状态表示:f[i][0]表示前i列全部填满的所有方案,f[i][1]表示前i列全部填满缺一个的所有方案。属性:方案数 状态计算:f[i][0] = f[i - 1][1] + f[i - 2]
阅读全文
摘要:A题是一道模拟题按照题目的意思模拟就行,B题是一道思维题,C题是一道数论的题,D题是一道思维题,E题是一道树上差分的问题,E题关于树上差分看了好多博客其实还是不太理解。 A题 #include<iostream> using namespace std; const int N = 1010; in
阅读全文
摘要:最近公共祖先 #include <cstdio> #include <algorithm> #include <cstring> #include <queue> #include <iostream> #include <cmath> using namespace std; const int
阅读全文
摘要:set:不支持随机访问,要想知道一个元素在set中的在第几个位置必须从头开始遍历 set中的所有操作基本是都是logn包括迭代器的++,--操作
阅读全文
摘要:题目链接 这次还是只做出来两道题,前两题都挺简单的,注意第二题需要开long long不开会wa,代码粘上来,以后可能会看吧 第一题 #include<iostream> #include <string> using namespace std; string a, b; int main() {
阅读全文
摘要:差分约束主要求解两个问题 不等式的可行解 源点需要满足的条件:从源点出发一定可以遍历到所有边 求可行解最短路和最长路的做法都可以 如何求最大最小值 求可行解的步骤 先将每个不等式Xi <= Xj + Ck,转化成从Xj走到Xi的一条边 找一个超级源点一定可以遍历到所有的边 从源点求一遍单源最短路,如
阅读全文
摘要:数字三角形是最裸的题目,没有加入任何的背景,这里就不写了。 下面这道摘花生的题目就是数字三角形的应用 Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。 地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花
阅读全文
摘要:因为前天做了一道spfa+二分的题目,没有看出来需要用二分,就想着先练一练二分的题目在洛谷题单里面的两道题目,虽然不太难,确实能起到训练二分的作用模版打的更熟了,对二分有了多一点的理解 [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 米长的木
阅读全文
摘要:最开始看错数据了没看到Q = 100 是50%的数据以为跑q遍floyd能过,结果只有30,其他全t 1、要注意题目中的条件,挖掘一些性质 2、本题的另一个关键的是要对floyd的过程原理比较熟悉,floyd一共有三重循环,第一重循环相当于枚举的决策,也就是能从那个点转移过来,k就是这个中转站,另外
阅读全文
摘要:学过dfs了,八皇后问题在学的时候打过一遍,想看看忘记了没有。果然学过,打过,ac了之后依然还是有细节没注意到 一定要细心,d[N]和ud[N],打错了ud打成d调了一个小时 思路:因为每行每列每条对角线都最多有一个皇后,这样我只在每一行放一个皇后,枚举在这一行的那一列放皇后,判断一下这一列和当前行
阅读全文