vlambda博客
学习文章列表

简单动态规划+快排并排



                         3.24 



暴富





编码有成

1024

1GB

一级棒

论如何变为一个算法大佬

简单动态规划+快排并排
简单动态规划+快排并排
简单动态规划+快排并排
简单动态规划+快排并排



简单动态规划+快排并排



_
_
_
_
_



简单动态规划+快排并排

01

简单动态规划

简单动态规划+快排并排



  相信大家如果没怎么接触动态规划的话,见到这道题的时候应该和小编一样万脸懵逼,而这道题居然还贴上简单标签,真就把小编我不当人看呗。话不多说,开始讲题解。小编大概看了下大佬们写的,总体分两种:

第一种:使用一维数组动态规划

定义一个数组dp[max];

dp[i]表示(x1,x2,....xi)中的最长预约时间

递归的方程满足:dp[i]=max(dp[i-1],dp[i-2]+xi)

第二种:使用二维数组动态规划

这种可能比较好理解

dp[i][0]表示(x1,x2,....,xi)中不接受xi的最长预约时间

dp[i][1]表示(x1,x2,....,xi)中接受xi的最长预约时间

满足方程:

dp[i][0]=max(dp[i-1][1],dp[i-1][0]);

dp[i][1]=dp[i][0]+xi;

最后比较dp[max][0]和dp[max][1]大小即可


代码:

简单动态规划+快排并排




_
_
_
_
_



简单动态规划+快排并排

02

快速排序和归并

简单动态规划+快排并排



对于这道题,其实大家如果会使用stl中multiset等容器的话,或者就使用sort(&a[0],&a[max-1])函数也是可以做出来的,但是对于快排和并排这两种非常经典的,最好还是能手撸出来,下面就是小编比较喜欢的两个模板。

简单动态规划+快排并排


_
_
_
_
_



简单动态规划+快排并排

03

stl库的小知识

对于vector<int> p

向其中插入元素只能用p.push_back();

而对于map<int,int> p

则可采用p[1]=2;这种赋值方式

同时还有unordered_set和unordered_map;

这两个容器查找速度特别快,但是构造起来较慢。



写在最后:对于排序的题目还有大小堆的方式,小编明天抽时间尽量看懂然后推送给大家。最近小编比较想学动态规划那类的题目但是没有很多时间专门去看,所以呢小编从这周开始每周推出一次动态规划专题(食言莫怪手动狗头)。

哪些是你最迫切的心愿

简单动态规划+快排并排
简单动态规划+快排并排

世界和平

简单动态规划+快排并排

停止纷争

简单动态规划+快排并排

马上去旅游

简单动态规划+快排并排

战胜病毒

简单动态规划+快排并排

和自己和解

简单动态规划+快排并排

学会用秀米

掌握新知识

超越自己


● 越努力越幸运 ●