随笔分类 -  算法(含STL)基础

1
原理还是很重要的.
摘要:昨晚不是求了半天中位数吗,打算求一个快一点的办法 思路 选择小根堆的堆顶元素作为分界点,比他小的元素都放到大根堆,比他大的放到小根堆。 我们设q1,q2分别为大根堆,小根堆,n1,n2为大根堆元素个数,n2位小根堆元素个数,总元素个数为n。 那么不需要调整的情况:n2=n1+1; 2.1:当n1>n 阅读全文
posted @ 2020-11-15 20:37 安之若醇 阅读(202) 评论(0) 推荐(0) 编辑
摘要:均分纸牌 有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸牌,然后移动。移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左 阅读全文
posted @ 2020-11-14 20:41 安之若醇 阅读(211) 评论(0) 推荐(0) 编辑
摘要:去重函数,去掉相邻元素中一样的 其实是把后面不重复的移动到前面来!!!!!!!! 需要配合sort使用, 但是要注意它并没有把元素删除,而是把那个元素放到了最后 #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> 阅读全文
posted @ 2020-11-07 12:10 安之若醇 阅读(146) 评论(0) 推荐(0) 编辑
摘要:其实也没啥,,但是为了算法的完备性我还是想写写,,,说实话我觉得可能是我理解的问题吧,哈希表可能没有这么,,,简单 这个题没啥可说的,,,,,但是我可能需要截一下 直接数组哈希哈哈哈哈哈哈哈,遍历2000 1 #include <iostream> 2 #include <cstdio> 3 #in 阅读全文
posted @ 2020-10-28 20:39 安之若醇 阅读(114) 评论(0) 推荐(0) 编辑
摘要:其实这两个,都用了三角形不等式,就是如果通过中介节点可以比原来的还小,那就更新 (单源最短路) 有个区别就是,dijkstra 是通过优先队列,这样每次都取最小的,每次都取最小的话,最小的不会被其他节点更新,所以只需要一次 也就是说,只要它出过队列,他就可以不用在出一次了,所以我们的标记数组放在出队 阅读全文
posted @ 2020-10-27 23:00 安之若醇 阅读(200) 评论(0) 推荐(0) 编辑
摘要:挖坑填数:1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。4.再重复执行2,3二步,直到i==j,将基准数填入a[i]中。 1 int Adju 阅读全文
posted @ 2020-07-27 11:38 安之若醇 阅读(124) 评论(0) 推荐(0) 编辑
摘要:差分,就是求本位与前一个的差. d[i]=a[i]-a[i-1] 一维差分一遍for循环就出来了呀. 有什么用呢? 这种: 1、将区间【1,4】的数值全部加上3 2、将区间【3,5】的数值全部减去5 在某一个数组全部加上或者减去某个东西,就可以用差分数组. 举个例子嗷嗷嗷 1 #include <i 阅读全文
posted @ 2020-07-11 21:45 安之若醇 阅读(153) 评论(0) 推荐(0) 编辑
摘要:1 list<int> ll; 2 ll.push_back(12);// 在末尾添加元素 3 ll.push_front(10);// 在开头添加元素 4 ll.back();// 读取末尾元素 5 ll.front();// 读取开头元素 6 ll.push_back(12); 7 ll.uni 阅读全文
posted @ 2020-06-03 21:51 安之若醇 阅读(114) 评论(0) 推荐(0) 编辑
摘要:前不久发现自己vector有些不会了,于是想起了queue和stack. 有一个小故事,,,某天我跟自己打赌我queue没有写博园,结果打开一看竟然不知什么时候写过了,而且(QAQ)还有一定的浏览量了. 打赌的结果就是,,,queue和stack重新写一遍,而且要写在一起!!!于是就有了现在这篇博园 阅读全文
posted @ 2020-05-24 15:23 安之若醇 阅读(186) 评论(0) 推荐(1) 编辑
摘要:(原来弗洛伊德不止是写xhs<梦的解析>啊哈哈哈哈) 嘿嘿 (好哦不是一个人) 求任意两点之间的最短路径 有些城市之间有公路,有些城市之间则没有.请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。 根据我们以往 阅读全文
posted @ 2020-05-24 12:59 安之若醇 阅读(282) 评论(0) 推荐(0) 编辑
摘要:按摩师问题 https://leetcode-cn.com/problems/the-masseuse-lcci/ (找好状态转移方程) 今天只和昨天的状态相关,依然是分类讨论: 今天不接受预约:或者是昨天不接受预约,或者是昨天接受了预约,取二者最大值,即:dp[i][0] = max(dp[i - 阅读全文
posted @ 2020-04-05 22:38 安之若醇 阅读(195) 评论(1) 推荐(0) 编辑
摘要:今天在leetcode 上看见一个题: 如果数组中多一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。 一开始想用map(虽然也不太会) 其实这个题,有个限定条件"多于一半",所以就会有一种感觉"map用可惜了",一定有更好的算法满足这个条件啊. 当然这个题 阅读全文
posted @ 2020-04-05 22:05 安之若醇 阅读(180) 评论(0) 推荐(0) 编辑
摘要:学dp学到自闭(真的判断不出是个dp问题哇) 来看一下最近学的dp简单的题库. 1.01背包问题(P1048) 这个的特点是每种东西只能拿一次. https://www.luogu.com.cn/problem/P1048 二维dp: 1 for(int i=1;i<=m;i++) 2 { 3 sc 阅读全文
posted @ 2020-04-05 17:25 安之若醇 阅读(159) 评论(0) 推荐(0) 编辑
摘要:转载地址:http://blog.csdn.net/morewindows/article/details/6684558 阅读全文
posted @ 2020-03-30 10:26 安之若醇 阅读(509) 评论(0) 推荐(0) 编辑
摘要:写在前面:STL大法好! 容器set,可以实现排序,插入元素不能重复(所以可能插入失败) 接下来我们看一下set的基本用法 begin() 返回set容器的第一个元素的地址 end() 返回set容器的最后一个元素地址 clear() 删除set容器中的所有的元素 empty() 判断set容器是否 阅读全文
posted @ 2020-03-16 22:25 安之若醇 阅读(161) 评论(0) 推荐(0) 编辑
摘要:dp的基本思想,是把大问题转化成一个个小问题,然后递归解决。 所以本质思想的话还是递归。 dp最重要的是要找到状态转移方程,也就是把大问题化解的过程。 举个例子 一个数字金字塔 1 1 2 2 3 3 2 2 2 4 3 1 3 3 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的 阅读全文
posted @ 2020-03-12 20:19 安之若醇 阅读(206) 评论(0) 推荐(0) 编辑
摘要:头文件 algorithm 1 string s="hello"; 2 reverse(s.begin(),s.end()); 3 char c[]="hello"; 4 reverse(c,c+strlen(c)); 这个函数只要有区间就可以了。 很简单的。 阅读全文
posted @ 2020-03-12 14:10 安之若醇 阅读(192) 评论(0) 推荐(0) 编辑
摘要:高呼“STL大法好!!” vector 是一个不限定容量的数组。 先说一下头文件 #include<vector> 1.声明 vector<int>v1;//vector元素为 int 型 vector<string>v2;// vector元素为string型 2.基本用法 1 v1.push_b 阅读全文
posted @ 2020-03-12 14:04 安之若醇 阅读(135) 评论(0) 推荐(0) 编辑
摘要:(去膜拜大佬的博客园,结果被自己菜到自闭) find string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,那么会返回一个特别的标记npos。 对其返回的下标position的定义: string::size_type position;前面那一块是一个类型,不要管他(我是 阅读全文
posted @ 2020-02-18 16:50 安之若醇 阅读(801) 评论(0) 推荐(0) 编辑
摘要:首先,先定义数组 int a[10]; 这是今天的主角. 这四个函数都是在数组上操作的 注意要包含头文件 #include<algorithm> sort: sort(a,a+10) 对十个元素进行排序,顺序为从小到大. sort(a,a+10); for(int i=0;i<10;i++) { p 阅读全文
posted @ 2020-02-16 11:05 安之若醇 阅读(158) 评论(0) 推荐(0) 编辑

1
Live2D服务支持
点击右上角即可分享
微信分享提示