03 2022 档案

摘要:还记得“多阶段决策问题”吗,在回溯法中曾提到该问题。简单地说,每做一次决策就可以得到解的一部分,当所有决策做完之后,完整的解就浮出水面了(ps:解答树!)。在回溯法中,每次决策对应于给一个结点产生新的子树,而解的生成过程对应一棵解答树,节点的层数就是下一个待填充的位置cur 9.3.1 多段图的最短 阅读全文
posted @ 2022-03-31 15:11 banyanrong 阅读(230) 评论(0) 推荐(0) 编辑
摘要:在有向无环图上的动态规划是学习动态规划的基础,很多问题都可以转化为DAG上的最长路,最短路或路径计数问题 9.2.1 DAG模型 嵌套矩形问题: 矩形之间的可嵌套关系是一种典型的二元关系,二元关系可以用图来建模。如果矩形X可以嵌套在矩形Y里面,就从X到Y有一条有向边。这个有向图是无环的,因为一个矩形 阅读全文
posted @ 2022-03-27 13:31 banyanrong 阅读(202) 评论(0) 推荐(0) 编辑
摘要:动态规划的理论性和实践性都比较强,重点理解状态,状态转移,最优子结构,重叠子问题等概念,另一方面又需要根据题目的条件灵活设计算法 对动态规划的掌握程度在很大程度上能直接影响一个选手的分析和建模能力 动态规划是一种用途很广的问题求解方法,它本身并不是一个特定的算法,而是一种思想,一种手段 9.1.1 阅读全文
posted @ 2022-03-27 11:12 banyanrong 阅读(86) 评论(0) 推荐(0) 编辑
摘要:如何排序 下面将介绍排序函数的工作原理 8.2.1 归并排序 第一种高效算法是归并排序。按照分治三步法,对归并排序算法介绍如下: 划分问题:把序列分成元素个数尽量相等的两半 递归求解:把两半元素分别排序 合并问题:把两个有序表合并成一个 这边的关键在于合并问题的实现,代码实现如下: 点击查看代码 v 阅读全文
posted @ 2022-03-21 23:25 banyanrong 阅读(50) 评论(0) 推荐(0) 编辑
摘要:Firetruck: 较为简单的dfs,注意对于正在访问的结点的vis标记,同时如果有TLE的错误,需要先判断1是否能到达k,因为如果这是一个1-19的全通图,但是到达不了20,dfs是需要19!远远大于11,肯定会超时的 点击查看代码 #include<iostream> #include<cst 阅读全文
posted @ 2022-03-17 14:05 banyanrong 阅读(21) 评论(0) 推荐(0) 编辑
摘要:C++下通过引入头文件ctime 通过以下的代码来实现对于时间的记录 clock_t start, time; start = clock(); ... end = clock(); cout << (double)(start-end)/CLOCKS_PER_SEC << endl; 这对于刚开始 阅读全文
posted @ 2022-03-10 20:57 banyanrong 阅读(79) 评论(0) 推荐(0) 编辑
摘要:Zombie's Treasure Chest: 点击查看笔者代码 #include<iostream> #include<algorithm> using namespace std; typedef unsigned long long ull; ull gcd(ull a, ull b) { 阅读全文
posted @ 2022-03-10 20:34 banyanrong 阅读(20) 评论(0) 推荐(0) 编辑
摘要:尽管直观,适用范围广,但枚举,回溯等暴力方法常常无法走出低效的阴影 越是通用的算法,越不能深入挖掘问题的特殊性 本章介绍一些经典问题的高效算法,由于是量身定制,这些算法从概念思路到程序实现都是千差万别的 本章开始,读者刚刚开始接触严肃的算法设计理论 算法分析初步所需要解决的问题就是在写程序之前按估计 阅读全文
posted @ 2022-03-10 15:52 banyanrong 阅读(120) 评论(0) 推荐(0) 编辑
摘要:迭代加深搜索是一个应用范围很广的算法,不仅可以像回溯法那样找一个解,也可以像状态空间搜索那样找一条路径 迭代加深搜索最经典的例子就是埃及分数 这道题目理论上可以用回溯法求解,但是解答树非常恐怖,不仅深度没有明显的上界,而且加数的选择在理论上也是无限的,也就是说,BFS可能会无限拓宽,DFS会无限往深 阅读全文
posted @ 2022-03-10 00:08 banyanrong 阅读(194) 评论(0) 推荐(1) 编辑
摘要:本题主要是存储的问题,在存储上笔者原先的代码占用了大量的内存空间 这边笔者采用暴力的思想直接硬开所有情况的16^6的数组来存储该问题,当然这在时间上是十分浪费的,因为初始化实在太慢了,剩下的就是状态转移,以及隐式图的相关思路 点击查看笔者代码 #include<iostream> #include< 阅读全文
posted @ 2022-03-09 23:46 banyanrong 阅读(24) 评论(0) 推荐(0) 编辑
摘要:Fill 这边笔者认为是通过priority_queue优先队列来解决此类问题,当然倒水量越少,其优先度越高 当然还需要注意的是对数据的存储,因为这里的水量是固定的,因此只要知二得一,因此实际存储各个杯子水量的时候只要存储两个杯子得水量就可以了,同时memset对于大数组得初始化可以说是很慢的,尽量 阅读全文
posted @ 2022-03-09 23:34 banyanrong 阅读(64) 评论(0) 推荐(0) 编辑
摘要:哈希表: 一个ADT数组,其实类似数学上的映射,但是其映射后的集合更加稠密,可以认为是对原先数据集合的抽象稠密有限空间存储 哈希冲突: 当两个不同的数据经过哈希函数的映射到同一个点,就发生了哈希冲突,完美的哈希函数我们希望是一一的,也就是说 哈希函数又叫做散列函数,哈希的存储结构十分利于查找(只要o 阅读全文
posted @ 2022-03-05 20:42 banyanrong 阅读(64) 评论(0) 推荐(0) 编辑
摘要:N皇后很明显是一个NP—Hard问题,如果n足够大的话,在有限较短的时间内是很难得出答案的,但是注意到N皇后(笔者认为这类问题称为棋盘问题更为贴切),在n*n棋盘之上,每个点有且只有两种状态,这与电脑自身的进制非常类似,因此很自然的想到状态压缩,通过二进制码来表示原先通过数组来表示的皇后状态,也就是 阅读全文
posted @ 2022-03-01 00:14 banyanrong 阅读(92) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示