2017级算法模拟上机准备篇(二分+贪心)
摘要:GRH:【 我这么喜欢复用曾经题目 然后揉起来的人……你们居然还没套路起来 】 计网的烦恼(一维覆盖问题) 由题目我们可以知道,答案一定在[l,pl[n]−pl[1]+1][l,pl[n]−pl[1]+1]中,所以我们可以二分答案。 通过枚举每一个答案然后判断这个答案合不合理。 在这个题目中,如果我
阅读全文
posted @
2018-12-25 16:20
Visper
阅读(404)
推荐(1)
2017级算法模拟上机准备篇(斐波纳契数列)
摘要:最简单的斐波纳契数列的递归推导式为:dp[n]=dp[n-1]+dp[n-2]; 最简单的例子:一对小兔子在出生的第三个月后可以繁殖并每月生一对小兔子,兔子的总对数就是兔子序列:1 1 2 3 5 8... 其实我们可以重新思考一下原来的递推公式:兔子分两类:不具有繁殖能力的幼年期和具有繁殖能力的成
阅读全文
posted @
2018-12-21 15:24
Visper
阅读(248)
推荐(0)
2017级算法模拟上机准备篇(贪心 进阶_1)
摘要:AlvinZH想回家 这道题本质上还是贪心与算法的简单的结合,有一个小的trick值的主要一下,结构体优先队列的运算符重载问题。 对于每一步都需要当前最大值的问题,我们可以使用优先队列来辅助我们进行操作。
阅读全文
posted @
2018-12-20 20:20
Visper
阅读(208)
推荐(0)
2017级算法模拟上机准备篇(计算几何 初阶_1)
摘要:平面最近点对/最远点对 Bamboo之吃我一拳(单纯的平面最近点对) 零崎的战争(两个点集的平面最近点对) 平面最近点对实质上体现的还是分治的思想 利用二分法将一个点集划分为两部分,那么平面最近点对只会存在于两个几何内部 或者在区间之间。 利用递归计算出两个内部的最近距离之后,利用当前距离为标杆,控
阅读全文
posted @
2018-12-15 16:39
Visper
阅读(231)
推荐(0)
2017级算法模拟上机准备篇(贪心 初阶)
摘要:贪心问题的关键在于选择合适的贪心策略(局部最优解可以推导出全局最优解) 简单·简单的贪心 在黑板上写了N个正整数做成的一个数列,进行如下操作: 每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数。 在所有按这种操作方式最后得到的数中,最大的max,最小的为m
阅读全文
posted @
2018-12-14 16:22
Visper
阅读(231)
推荐(0)
2017级算法模拟上机准备篇(序列DP 进阶_1)
摘要:进阶版的序列DP 从一道题的优化开始 ModricWang的序列问题 题目描述:给定一个序列,求出这个序列中的最长上升子序列的长度。 这道题的本质还是求解一个最长上升子序列的问题 相对与之前提到过的O(n^2)的算法 我们可以重新整理思路 用O(nlogn)的思路来写,用贪心和二分优化之前的算法 我
阅读全文
posted @
2018-12-14 15:22
Visper
阅读(349)
推荐(0)
2017级算法模拟上机准备篇(序列DP 初阶)
摘要:序列DP 是一类蛮有意思的DP 序列区别于数组的地方就在于没有要求连续性 从一道简单的序列DP开始: SkyLee炒股票(最大连续子序列和) 这道题其实用DP有点浪费的感觉,其实这道题用简单的遍历法也可以,不过实质上还是DP思想的进阶。 这道题如何设置DP数组?我们不妨设置DP[i]为以数组元素ar
阅读全文
posted @
2018-12-14 12:22
Visper
阅读(219)
推荐(0)
2017级算法模拟上机准备篇(归并排序)
摘要:归并排序是分治法的一个最经典也是最基础的应用 Divide And Conquer的思想很重要 归并排序的的Divide采用了简单的二分 Conquer采用的是将两个有序数组合并为一个有序数组。 2014-Inverse number:Reborn 逆序数求解 利用归并排序来求解逆序数最巧妙的地方是
阅读全文
posted @
2018-12-12 22:24
Visper
阅读(411)
推荐(0)
2017级算法模拟上机准备篇(一)
摘要:回顾一下往年的考题知识点: The Last Battle!! 2014级算法期末上机 简单题——I wanna be the 升级者Ⅰ 结构体排序 STL:sort() 简单题——I wanna be the 升级者Ⅱ 二分 :STL : lower_bound () 简单题——Railway S
阅读全文
posted @
2018-12-11 21:47
Visper
阅读(665)
推荐(0)
2017级算法第一次上机-C.芸茹的课堂测试
摘要:Horner Ruler 霍纳规则没什么好说的 要注意的更多的还是细节的问题 取模运算 循环的边界问题
阅读全文
posted @
2018-12-11 00:45
Visper
阅读(155)
推荐(0)
2017级算法第二次上机-C.芸如的入学测试
摘要:这道题考察的实际就是一个简单的前缀和问题。值的注意的还是取模的问题。两个数取模,以防万一,出现对负数取模的问题 可以先加上mod然后再对mod取模。 能long long就不int
阅读全文
posted @
2018-12-11 00:09
Visper
阅读(531)
推荐(0)
2017级算法第二次上机-E.SkyLee的图书整理
摘要:这道题考察了map函数的使用,map最简单的理解就是把一个数映射到一个数。然后使用map也类似hash数组的方法即可 map的头文件是<map> map<int,int> 将一个数映射到一个数
阅读全文
posted @
2018-12-10 23:45
Visper
阅读(214)
推荐(0)
2017级算法第二次上机-D.天秤的烦恼
摘要:这道题考查的还是基本STL的使用 这次考察的是去重函数的STL unique() unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址。 所以如果你想要的是将任意一个数组实现去重 那么首先要将
阅读全文
posted @
2018-12-10 20:57
Visper
阅读(191)
推荐(0)
2017级算法第二次上机-B.第k顺序统计量
摘要:第k顺序统计量是一个经典的算法,其本质上是利用类似于快速排序的方法实现的,但是我们可以使用STL模版 nth_element()轻松过题。 头文件<algorithm> nth_element(a,a+k-1,a+3000000); 本质上使的整个数组的趋势上还是从小到大的,本题求解的是第k小的元素
阅读全文
posted @
2018-12-10 20:42
Visper
阅读(193)
推荐(0)
2017级算法第二次上机-B.女娲加农炮
摘要:这道题本质上还是最经典的优先队列的使用的例题:合并果子。 借用这道题总结复习一下优先队列。 优先队列的头文件:<queue> 升序队列priority_queue <int,vector<int>,greater<int> > q;降序队列priority_queue <int,vector<int
阅读全文
posted @
2018-12-10 20:34
Visper
阅读(310)
推荐(0)
2017级算法第二次上机-A.ModricWang's Real QuickSort Query
摘要:其实这道题更多的是模拟题的感觉。按照题目给定的思路写即可。C++ 可以直接使用STL里面的sort。
阅读全文
posted @
2018-12-10 20:13
Visper
阅读(207)
推荐(0)
2017级算法第三次上机-G.ModricWang的导弹拦截系统
摘要:这道题实质上是求解给定序列中的的最长不增子序列的长度。 首先需要注意的是子序列和子数组的区别。子序列是不要求元素之间的连续性。 这道题的求解过程中还是利用了动态规划的思想,也可以进一步学习一下? 究竟什么是状态转移方程??? 其实一般的状态转移方程都是由子状态到父状态,可以是1对1,也开始2对1,但
阅读全文
posted @
2018-12-10 17:08
Visper
阅读(226)
推荐(0)
2017级算法第三次上机-F. SkyLee炒股票
摘要:这道题其实是股票系列的一道很经典的题目,即只可以买卖一次所带来的最大收益。 题目给定的是每天相对于前一天的的收益,所以这道题可以简化为连续n个数的最大值问题。 这道题的算法有一点贪心的思想。就是设置curnum和maxnum从开始到末尾扫描,curnum不断加加,同时利用curnum不断更新maxn
阅读全文
posted @
2018-12-10 16:52
Visper
阅读(214)
推荐(0)
2017级算法第三次上机-C.SkyLee组装电脑
摘要:将两条流水线的问题移植到n条流水线的问题,本质上的DP状态转移方程没有太多变化。 两个trick小技巧分享给大家: 在n个数中求最小值或者是最大值的情况下。可以采取n=max(n,x)的形式。 自己对memset函数的一点理解: memset函数的设置的是字节层面的东西,而不是整个整数。 所以一般I
阅读全文
posted @
2018-12-10 00:46
Visper
阅读(193)
推荐(0)
2017级算法第三次上机-B.SkyLee逛漫展
摘要:ALS 一道动态规划最经典的题目 动态规划实质上其实就是表格法,利用表格来记录每个子问题的解。 DP所关注的其实是递归 即一个较小问题的解和一个较大问题的状态转移问题。 其次还要关注的其实还是是初始值的设立,这个决定了后续的递推能否顺利的进行。 还有要思考好dp数组所代表的具体的含义 这样在状态转移
阅读全文
posted @
2018-12-10 00:07
Visper
阅读(156)
推荐(0)
2016级算法第三次上机-A.水水的二分查找
摘要:借用着道题来复习一下 二分查找 说起二分查找 有几个点是要重视的 1.最简单的二分查找 2.上下界二分查找的实现 3.c++ STL 二分查找三兄弟的使用 最简单的二分查找 上下界二分查找:其实自己手写上下界二分查找其实也不难。上下界其实就是当你找到一个值无法直接确定这个值是否就是最小或者最大的值,
阅读全文
posted @
2018-12-09 23:11
Visper
阅读(154)
推荐(0)
2016级算法第三次上机-E.SkyLee狩猎魔物
摘要:这道题本质上还是一个完全背包的问题 需要注意的点还是: 1.要求装满首先是讲一维初始化问题 至于是正无穷还是负无穷要根据问题而定。 2.min OR max? #include <iostream> #include <algorithm> #include <cstring> using name
阅读全文
posted @
2018-12-09 15:14
Visper
阅读(156)
推荐(0)
回到原点 重新感受01背包的魅力 ZerOnePack
摘要:01背包问题是很经典的动态规划问题,给定总容量T,物品的件数。然后给定数组weight[k] value[k]来求解背包装上物品所带来的最大收益。 最开始的时候是设置二维DP数组来求解问题 我们不妨设数组DP[i][j]来表示的是前i件物品在容量为j的情况下所取得的最大收益值,当我们设置好一个DP数
阅读全文
posted @
2018-12-04 17:46
Visper
阅读(209)
推荐(0)
中等·Magry摆什锦糖 buaacoding DP 动态规划
摘要:这道题是一道简单的动态规划的问题,题目大意是利用n个数来判断是否可以组成一个值为k的数字 这道题可以利用必须装满的01背包思路来解释,另一方面也可以利用另一种思路来思考,直接从答案入手,定义dp数组DP【i】【j】那么这个数组所代表的意思就是前i个数是否可以组成值为j的数。由于dp的值只有两个,于是
阅读全文
posted @
2018-12-04 16:46
Visper
阅读(198)
推荐(0)
树形DP初步-真树 buaacoding
摘要:其实树形DP的思路还是基于DP,对于一棵树本来就有很好的递归性质,很多树形DP的问题,也不是不可以使用单纯的树上递归来解决,那为什么还要引入递归的问题呢?? 很简单的回答就是,DP中的P就是programing 的意思,是一种记录,对于递归的低效性,很大一部分来源于对于单个问题的重复计算,我们使用一
阅读全文
posted @
2018-12-03 16:26
Visper
阅读(469)
推荐(0)
二叉树的最长链长度—DFS buaacoding 树形DP初步-二叉树
摘要:首先虽然这道题说的是树形DP的事情,但是其实本质上还是考察DFS的事情,说起深搜,自己的理解还是太浅了,一开始对这道题的理解是,默认题目里说的最长链说的是一定会经过俩个叶节点,但是不一定会经过根节点。但是实质上根节点不一定在最长链的通路上。而我一开始实现的操作还是利用了上学期的数据结构的利用递归实现
阅读全文
posted @
2018-12-03 15:16
Visper
阅读(893)
推荐(0)