- 博客(11)
- 收藏
- 关注
原创 [BZOJ 2763] 飞行路线 ——分层图
BZOJ 2763 飞行路线以本题讲解分层图的用法: 在解决一些图论问题的时候,如果有一些修改的操作,比如如此题中允许免费k次这样的操作,显然在一层图中跑最短路会出问题,因此我们想到一种分层图的概念如果我们将免费k次,抽象成建立k成图,到下一层便是免费一次【边权为0】。这样再跑一遍最短路便可以解决问题#includeusing namespace std;#define
2018-01-13 09:03:55
463
原创 网络流
最大网络流思路:不断寻找增广路#include<bits/stdc++.h>#define MAX 10000#define CanToNode Edges[CanTo[Top][i]]#define Min(a,b) (a)<(b)?(a):(b)using namespace std;struct EdgeType{ int To, Cap, Flow; //To能去
2017-11-18 17:20:07
255
原创 [洛谷 P3383] 线性筛素数
线性筛素数洛谷 P3383 题目描述: 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 数据范围: 对于100%的数据:N 样例输入: 100 5 2 3 4 91 97 样例输出: Yes Yes No No Yes代码
2017-11-10 21:59:37
472
原创 [CodeVs 1063] 合并果子 ——小根堆
CodeVs 1063/*首先理解小(大)根堆的概念即将数据以树的结构处理小根堆: 每个父节点都比其叶子小大根堆: 每个父节点都比其叶子大这样,保证了这组数据较为有序,且根节点毕竟为最值然后取最值,并删除这个数【处理方法为覆盖为最后一个数】,再次维护一下根节点,不断重复,即实现了堆排序然后以CodeVs 1063 「合并果子」这道经典题来看这种最小堆的实际用途分析:基础思路肯
2017-10-21 16:02:55
318
原创 [CodeVs 4373] 窗口 ——单调队列
CodeVs 4373以这道题来了解单调队列首先,在我们暴力的时候,会发现很多在前一步的时候已经比较过了,找窗长为m第i个位置时,则实际上前m-1到m个已经在第i-1个位置上比较过了因此采用单调队列即把前面所找到的最大值记录下来,并用队列存储。当往后面找的时候便与队列里的数比较,若大于等于最后一个数,肯定这最后一个数不是最大值,便tail--使队尾出队,并不断这样操作直到小于队
2017-10-21 08:32:35
254
原创 归并排序
/*归并排序:·算法: 分治法·思路: 1.【递归二分】: 先不断二分[采用递归], 直到分成两两一组, 分成左边一堆a和右边一堆b。2.【选择最小】: 然后不断选a或b里最小的一个数。用a_Top记录a当前选的数, b_Top记录b当前选的数, 如果a[a_Top]2.(1)终止条件为: 当有个top超出了范围时。3.【处理剩余】: 看哪一堆还有剩下没判断, 即没放进
2017-09-23 20:19:44
177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人