2018年12月10日
摘要: 这道题考察了map函数的使用,map最简单的理解就是把一个数映射到一个数。然后使用map也类似hash数组的方法即可 map的头文件是<map> map<int,int> 将一个数映射到一个数 阅读全文
posted @ 2018-12-10 23:45 Visper 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 这道题考查的还是基本STL的使用 这次考察的是去重函数的STL unique() unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址。 所以如果你想要的是将任意一个数组实现去重 那么首先要将 阅读全文
posted @ 2018-12-10 20:57 Visper 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 第k顺序统计量是一个经典的算法,其本质上是利用类似于快速排序的方法实现的,但是我们可以使用STL模版 nth_element()轻松过题。 头文件<algorithm> nth_element(a,a+k-1,a+3000000); 本质上使的整个数组的趋势上还是从小到大的,本题求解的是第k小的元素 阅读全文
posted @ 2018-12-10 20:42 Visper 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 这道题本质上还是最经典的优先队列的使用的例题:合并果子。 借用这道题总结复习一下优先队列。 优先队列的头文件:<queue> 升序队列priority_queue <int,vector<int>,greater<int> > q;降序队列priority_queue <int,vector<int 阅读全文
posted @ 2018-12-10 20:34 Visper 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 其实这道题更多的是模拟题的感觉。按照题目给定的思路写即可。C++ 可以直接使用STL里面的sort。 阅读全文
posted @ 2018-12-10 20:13 Visper 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 这道题实质上是求解给定序列中的的最长不增子序列的长度。 首先需要注意的是子序列和子数组的区别。子序列是不要求元素之间的连续性。 这道题的求解过程中还是利用了动态规划的思想,也可以进一步学习一下? 究竟什么是状态转移方程??? 其实一般的状态转移方程都是由子状态到父状态,可以是1对1,也开始2对1,但 阅读全文
posted @ 2018-12-10 17:08 Visper 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 这道题其实是股票系列的一道很经典的题目,即只可以买卖一次所带来的最大收益。 题目给定的是每天相对于前一天的的收益,所以这道题可以简化为连续n个数的最大值问题。 这道题的算法有一点贪心的思想。就是设置curnum和maxnum从开始到末尾扫描,curnum不断加加,同时利用curnum不断更新maxn 阅读全文
posted @ 2018-12-10 16:52 Visper 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 将两条流水线的问题移植到n条流水线的问题,本质上的DP状态转移方程没有太多变化。 两个trick小技巧分享给大家: 在n个数中求最小值或者是最大值的情况下。可以采取n=max(n,x)的形式。 自己对memset函数的一点理解: memset函数的设置的是字节层面的东西,而不是整个整数。 所以一般I 阅读全文
posted @ 2018-12-10 00:46 Visper 阅读(183) 评论(0) 推荐(0) 编辑
摘要: ALS 一道动态规划最经典的题目 动态规划实质上其实就是表格法,利用表格来记录每个子问题的解。 DP所关注的其实是递归 即一个较小问题的解和一个较大问题的状态转移问题。 其次还要关注的其实还是是初始值的设立,这个决定了后续的递推能否顺利的进行。 还有要思考好dp数组所代表的具体的含义 这样在状态转移 阅读全文
posted @ 2018-12-10 00:07 Visper 阅读(147) 评论(0) 推荐(0) 编辑