
暑假学习总结
北斗星司 -
这个作者很懒,什么都没留下…
展开
-
hdu 1520 树状dp加 dfs
该题目说的是,给定一个树状关系每个节点都有各自权值,但父节点和子节点只能来一个问权值最大为多少也很简单就分为该节点选不选,如果选了,那么他的子节点就不能选了,假如不选则他的子节点有选和不选两种情况。代码如下#include <iostream>#include <cstring>#include <queue>#include <cmath>using namespace std;const int N=6005;int va[N],fath原创 2021-08-10 16:19:44 · 91 阅读 · 0 评论 -
暑假学习-dp的硬币问题
你有面值为1 5 10 25 50的硬币,给定金钱n要求换的的硬币数最少,问最少的硬币的数目是多少。比较简单就直接写式子了,dp的式子为 m【i】=min{m【i】,m[i-t[j]]+1}代码为#include <iostream>#include <cstring>#include <queue>#include <cmath>using namespace std;const int N=100005;typedef long long原创 2021-08-09 22:38:17 · 137 阅读 · 0 评论 -
暑假学习快速排序poj 2388 中的快速排序
快速排序的意思是找一个数作为基准数,一般是最后一个数,然后让i的左边比基准数小,j的右边比基准数大。先让ij为第一个数字,可设置循环j从开头自增,如果第j个数字小于基准数,则i自增。到最后就把基准数和第i个数字交换而poj 2388的题意是给定个奇数,求中位数,用快速排序的方法就是#include <iostream>#include <cstring>#include <queue>#include <cmath>using namespac原创 2021-08-07 18:24:10 · 244 阅读 · 0 评论 -
hdu 4911 “Inversion” 暑假学习的归并排序
归并排序,是 分治法的一种。具体三步走,是分解,解决合并。意思也就是先分解,然后把小问题先解决,最后合并在一起,解决大问题。这是我看的视频里的图片,感觉说的很清楚。题目说的大体意思是,给出一串数,并给k次操作,每次操作可以把2个相邻的数换位置,求<=k次操作之后,数列的逆序对数最少是多少,因为每一次操作是可以把逆序对数-1的,那么只要求出逆序数对减掉k就可以了,因为数据较大,需要用归并排序来求。先求出逆序对,再跟k作比较,如果交换的次数大于等于逆序对,则交换和逆序对的个数则为零。否则则就是原创 2021-08-03 22:45:48 · 121 阅读 · 0 评论 -
七月份学习总结和接下来的学习计划
放假也差不多小半个月份了,这一段时间内虽然学习的东西不多,但也多少学习了一些东西,也看了一下关于做题如何应对的技巧,重现看了搜索的dfs和bfs也算是有点收获吧,除了最基础的搜索,了解了向八皇后这样的经典的问题,重新看了一下贪心算法,现在在看dp,因为感觉之前学习的不是很了解。但这几天每天学习时间上不仅少,而且还有点不固定,学起来还好,但老是想着先玩一会在学习,感觉有点像是学习是为了理直气壮的玩游戏一样,最好导致游戏和学习都没整好,接下来希望自己能够好好的学会把,感觉好久没有那种努力的感觉了,希望加油原创 2021-08-02 21:04:12 · 100 阅读 · 0 评论 -
暑假学习-贪心
这几天又重现看了一下贪心,说实话不是很难,也算是偷懒了吧。在这里简单的总结一下。就是每一步都选择最优解,也就是局部最优解,但是结果不一定是最优解。常见的问题1 活动安排问题 说的是,一天有不同的节目,要看节目必须,从开始看到结尾,问最多看多少的节目。按结束的时间排序,从第一个开始,按结束的时间再去找下一个最早开始的,就可以了。2区间覆盖的问题给定一个长度为n的区间,给出m条线段,问最少用多少条线段可以将整个区间完全覆盖按左端点从小到大排,选在第一个的右端点,去找下一个左区间小于等于右区间,且长原创 2021-08-01 23:27:53 · 61 阅读 · 0 评论 -
暑假学习-二叉树
二叉树有点类似我们所认识的树状图,可以清楚的查看层次关系。首先由根节点开始,最多由左节点和右节点,一次下去。二叉树一般用指针来表示struct node{ int value; // 根节点 node *l,*r; node(int value=0,node*l=NULL,node * r=NULL):value(value),l{l},r(r){};};通过表示根节点和左右节点,用来表示树。而二叉树的遍历,可分为两大类,宽度优先和深度优先这里只说深度优先的遍历深原创 2021-07-29 23:40:34 · 148 阅读 · 1 评论 -
暑假学习-并查集的问题
这几天看了并查集,感觉这里面解决的问题,就挺生活的,比较有意思。比如,a和b是朋友,b和c朋友,d谁都不认识。认识的人做在一起,不认识的人在一起,问能做几个桌子,很明显这个a b c坐在一起,d单独做一起。我们要解决的就是类似的问题。首先先初始化,可以开一个数组,对应的值就是自己听命谁,开始自己数组装的值都是自己,合并的话就把要和并数组和并在一起。可以知识单纯的合并两个元素,找到各自的根节点进行合并。代码如下#include <iostream>#include <cstring原创 2021-07-27 14:57:40 · 76 阅读 · 0 评论 -
暑假学习-dfs和dfs应用n皇后的问题
dfs与前面学习的bfs有相似的地方,但是dfs的代码更简单和方便。dfs是深度搜索,一直向下走走到最深处,走不下去了再回溯上一个。相较于上一个bfs的代码只需要把bfs改为dfsdfs代码为void dfs(int dx,int dy){ room[dx][dy]='#'; num++; for(int i=0;i<4;i++) { int newx=dir[i][0]; int newy=dir[i][1];原创 2021-07-25 11:58:29 · 115 阅读 · 0 评论 -
暑假学习-BFS
之前在学校学习过bfs,但没有完全的掌握,这次通过这两天的学习,有了一些新的认识。首先是bfs走迷宫的问题,说的是一个长方形,有红色和黑色的瓷砖,只能站在黑色瓷砖上移动,给出初始的位置,问能移动的瓷砖个数有多少。这个问题用队列来做,会很方便,因为当前位置用完就标记上“来过了”在之后的搜索中就用不到了。#include <iostream>#include <cstring>#include <queue>using namespace std;char ro原创 2021-07-23 22:20:35 · 100 阅读 · 0 评论 -
暑假学习-对题目和排序算法的新认识
由于今天书本到了,通过今天的读书也算是有一点收获,在这里总结一下自己的心得。(1)首先是,提供了一种新的思路,在之前做cf的题目的时候,有的时候会遇到题目给出的样例都可以过,但代码wa的情况,找不到更多的样例来测试自己的代码。这里给出了一些的思路,用暴力的方法写出来,通过这个暴力的方法来获得更多的样例,这也是一种解决的方法。感觉这个方法适用于暴力解决会超时,而且自己是真的想不明白的时候在使用。(2)然后是对排序算法有了新的了解,之前我们了解的冒泡排序,这个复杂度是 n方 ,一般不用。经常用的是sort函原创 2021-07-21 22:03:43 · 67 阅读 · 0 评论