摘要: 北京大学程序设计实习2017年期末考试自解 1:蜜蜂 一开始想用广搜,结果递归算法爆TLE了,这时候不得不抱dp的大腿,记忆化就是香。 #include<iostream> #include<cstring> using namespace std; long long int way[51]; i 阅读全文
posted @ 2019-06-19 23:44 郭怡柔 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 总时间限制: 1000ms 内存限制: 65536kB 描述 N cities named with numbers 1 ... N are connected with one-way roads. Each road has two parameters associated with it : 阅读全文
posted @ 2019-06-19 20:36 郭怡柔 阅读(274) 评论(0) 推荐(1) 编辑
摘要: 描述 图1是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成m*n(m≤50,n≤50)个方块,每个方块可以有0~4面墙。 输入 程序从标准输入设备读入数据。第一行是两个整数,分别是南北向、东西向的方块数。在接下来的输入行里,每个方块用一个数字(0≤p≤50 阅读全文
posted @ 2019-06-19 17:42 郭怡柔 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 算法总结-深搜 由于是深度优先,后进入的结点需要先读取,因此选取堆栈实现,在栈中保存从起始结点(状态)到当前结点的路径上的所有结点。一般用递归实现。 非递归框架 递归框架 在深度优先搜索中,状态空间的图结构并不一定需要显式地保存下来。 该做法需要一个全局数组array来存放每个走过的node,arr 阅读全文
posted @ 2019-06-19 16:14 郭怡柔 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 算法总结-广搜(BFS:breadth-first search) 广度优先搜索算法(用QUEUE) (详见刘家瑛课程PPT,结合Catch That Cow) 广搜和深搜的比较 广搜一般用于状态表示比较简单、求最优策略的问题。一层一层的搜,每一条路径的搜索进度都是一样的,因此需要用到队列的知识,不 阅读全文
posted @ 2019-06-19 01:22 郭怡柔 阅读(2937) 评论(0) 推荐(1) 编辑
摘要: 算法总结-递归 定义: 所谓递归即函数直接或间接地调用函数本身,调用的方式按照问题的不同人为定义,这种调用方式被称为递归方式。同时,为了不使这样的递归无限的发生,我们必须设定递归的出口,即当函数达到某种条件时停止递归。 问题的求解过程->划分成相同性质的子问题的求解->子问题的求解过程可以很容易地求 阅读全文
posted @ 2019-06-18 22:59 郭怡柔 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 算法总结-枚举 定义:依次尝试搜索空间中所有的解,测试其是否符合条件,若符合则输出答案,否则继续测试下一组解。 注意:在使用枚举这种相对较为暴力的解法来进行解题时,我们对其时间复杂度要做特别的关注。枚举问题的时间复杂度往往与需要枚举的情况个数有关,因为我们必须不遗不漏地枚举每一种可能成为答案的情况。 阅读全文
posted @ 2019-06-18 22:43 郭怡柔 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题目链接 时间限制:1 秒 内存限制:32 兆 题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金 n 元,而市场有 m 种大米,每种大米都是袋装产品, 其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢? 输入: 输入数据 阅读全文
posted @ 2019-06-17 11:32 郭怡柔 阅读(201) 评论(0) 推荐(0) 编辑
摘要: C++中int类型数据的十六进制写法 在C++中,int类型一般表示一个有符号的32位整数。在一些情况下(例如进行位操作时)我们需要使用十六进制的方式来表示int类型。int32的取值范围:最大值:2147483647,最小值:-2147483648 0x01 与 0x00000001相同,都表示十 阅读全文
posted @ 2019-06-17 10:24 郭怡柔 阅读(4355) 评论(0) 推荐(0) 编辑
摘要: 动态规划-背包问题 此博客分别讨论0-1背包,完全背包和多重背包,并给出相应的解题模板。 0-1背包 题目:有一个容量为 V 的背包,和一些物品。这些物品分别有两个属性,体积 w 和价值 v,每种物品只有一个。要求用这个背包装下价值尽可能多的物品,求该最大价值,背包可以不被装满。 0-1背包问题:在 阅读全文
posted @ 2019-06-17 00:48 郭怡柔 阅读(87240) 评论(3) 推荐(10) 编辑
摘要: 动态规划(DP:Dynamic Programming) 动态规划是求解包含重复子问题的最优化方法,把原问题分解为相对简单的子问题。动态规划只能应用于有最优子结构的问题(即局部最优解能决定全局最优解,或问题能分解成子问题来求解)。 基本思想 将原问题分解为相似的子问题,再合并子问题的解以得出原问题的 阅读全文
posted @ 2019-06-16 21:13 郭怡柔 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 枚举: 枚举是最简单也是最直白的搜索方式,它依次尝试搜索空间中所有的解,测试其是否符合条件,若符合则输出答案,否则继续测试下一组解。 例6.1 百鸡问题 广度优先搜索(BFS:breadth-first search): 例6.2 胜利大逃亡(广搜+剪枝) AC代码: #include<cstdio 阅读全文
posted @ 2019-06-15 23:37 郭怡柔 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 查找: 对于查找问题,有难有易。可能只是直接地对某个数字的查找,也可能涉及搜索等相对难度更大的算法。这里先介绍查找的基础概念和方法。 例 2.9 找 x AC代码: 通过此例,我们可以了解一下查找所涉及的几个基本要素。 1.查找空间。也常被称为解空间。所谓查找,就是在该查找空间中找寻符合我们要求的解 阅读全文
posted @ 2019-06-15 21:42 郭怡柔 阅读(164) 评论(0) 推荐(0) 编辑
摘要: Hash的应用: Hash即散列,不像数据结构与算法中讲的各种Hash方法和冲突处理等过多的阐述,以下主要介绍Hash在机试试题解答中的作用。 例2.5 统计同成绩学生人数 Hash解法AC代码:(一般想到的也是这种解法) 例2.6 Sort 时间限制:1 秒 内存限制:128 兆 题目描述: 给你 阅读全文
posted @ 2019-06-15 19:07 郭怡柔 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 日期类问题: 1.基本问题: 求两个日期间的天数差,即求以两个特定日期为界的日期区间的长度。 2.套路: 将原区间问题统一到起点确定的区间问题上去(比如与0000年1月1日的日期之差)。这样处理可以对数据进行预处理,在输入之前就预处理出所有日期与原点日期之间的天数差保存起来,当数据真正开始输入时,只 阅读全文
posted @ 2019-06-15 17:16 郭怡柔 阅读(155) 评论(0) 推荐(0) 编辑