排序和查找
文章平均质量分 96
策马奔腾向前冲
这个作者很懒,什么都没留下…
展开
-
二分查找---整数
二分模板一共有两个,分别适用于不同情况。算法思路:假设目标值在闭区间中, 每次将区间长度缩小一半,当时,我们就找到了目标值。版本1当我们将区间划分成和时,其更新操作是或者,计算时不需要加1。在单调递增序列a中查找的数中最小的一个(即或者的后继)int bsearch_1(int l, int r){ while (l < r) { int ...原创 2019-08-30 18:07:13 · 1269 阅读 · 1 评论 -
浮点数二分算法模板
bool check(double x) {/* ... */} // 检查x是否满足某种性质double bsearch_3(double l, double r){ const double eps = 1e-6; // eps 表示精度,取决于题目对精度的要求 while (r - l > eps) { double mid = (l...原创 2019-08-30 18:41:08 · 216 阅读 · 0 评论 -
最大化最小值---二分
Aggressive cows题目意思:农民约翰有用C只牛,然后他有N个隔间,每个隔间都有自己的坐标位置(一维的)pos,如何安排把牛安排进隔间才能使,所有牛之间距离的最小值最大,我们不需要求这个分配方案,我们只需要求这个最小距离的最大值,很裸的最小值最大化。输入N=5M=3x={1, 2, 8, 4, 9}输出3(在位置1,4,9的牛舍中放入3头牛)#inclu...原创 2019-08-30 22:58:30 · 375 阅读 · 0 评论 -
快速排序
题目:快速选择问题题意:输入n个整数和一个正整数k(1≤k≤n),输出这些整数从小到大排序后的第k个(例如,k=1就是最小值)。 n≤10^7。思路:首先想到的是先排序然后输出对应下标即可,但是范围是10^7, 快排的速度是nlogn,如果限制速度的话就超时了!我们可以在快排的过程中寻找k的范围,快排的是否要划分左右俩部分,这样我们每回划分时看k在左边还是右边,这样我们每次只需递归一半...原创 2019-07-26 19:57:25 · 239 阅读 · 0 评论 -
拓扑排序
如果图中存在有向环,则不存在拓扑排序,反之则存在。不包含有向环的有向图成为有向无环图。可借助DFS完成拓扑排序:在访问完一个结点之后把它加到当前拓扑排序的首部。int c[maxn];int topo[maxn],t;bool dfs(int u){ c[u]=-1;//访问标志 for(int v=0;v<n;v++){ if(G[u][v]){...原创 2019-08-22 14:54:22 · 372 阅读 · 0 评论 -
P1038 神经网络
P1038 神经网络坑点当一个点的C值大于0时,才能向下传递C * W 的值 第一层(输入层)的点如果C大于0可直接向下传递,不需C -= U;AC代码:#include <bits/stdc++.h>using namespace std;const int maxn = 105;int C[maxn],U[maxn],indegree[maxn],head[...原创 2020-02-01 16:19:44 · 248 阅读 · 0 评论 -
哈希---平方探测法
哈希表也称为散列表,它是通过关键码值而进行直接访问的数据结构。即它通过把一个关键码映射到表中的一个位置来访问记录,以加快查找速度。当然了在做关键码映射的时候,难免会把不同的关键码映射到相同的位置,这时冲突就产生了。使用平方探测法(Quadratic Probing)可以解决哈希中的冲突问题它的基本思想是:设hash函数为h(key) = d,并且假定其存储结构为循环数组,则当冲突发生时,它接下来需...原创 2019-08-22 15:58:06 · 10777 阅读 · 3 评论 -
归并排序
归并排序:1、[L,R]=>[L,mid],[mid+1,R]2、递归排序[L,mid]和[mid+1,R]3、归并,将左右两个有序序列合并成一个有序序列void merge_sort(int q[],int l,int r){ if(l>=r) return; int mid=(l+r)/2; merge_sort(q,l,mid)...原创 2019-08-30 00:28:00 · 103 阅读 · 0 评论 -
1035 插入与归并 (25 分)
1035插入与归并(25分)根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和...原创 2019-08-30 00:35:17 · 156 阅读 · 0 评论