暑假集训笔记
mmciel
这个作者很懒,什么都没留下…
展开
-
【暑假集训笔记】尺取法简介
/**尺取法尺取法:顾名思义,像尺子一样取一段,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。eg:给定一个序列(整数),找出最短的子序列长度,使得其和大于或等于S。问题:1、什么情况下能使用尺取法? 所求解的答案在区间内连续;在通过判断之后,区间的移动有明确的方向(一般是起点到终点)2、何时推进区间的端点? ...原创 2018-08-01 09:08:12 · 360 阅读 · 0 评论 -
【暑假集训笔记】二分查找(二分查找数值+二分64种类型+最大化最小值+最小化最大值+最大化平均值模型)
//二分查找总结:由于本人二分常年写成死循环/*简介:二分查找 == 折半查找要求:线性表,有序表(注意升序与降序)思想: 设查找区间[L,R] 取中点 mid = (L+R)/2 判定mid是否符合要求:(如何判断:bool check(int mid); ) 是:缩短区间求边界;直接返回; 否:缩短区间 最终结果val = R 或者val = L;*///典型线...原创 2018-08-01 10:44:43 · 439 阅读 · 1 评论 -
【暑假集训笔记】折半枚举+超大背包(无解析)+抽屉原理(鸽巢原理)+整数关系的应用
//折半枚举(双向搜索)/*思想:枚举集合过大,拆成两个集合分别枚举简单的说就是有个问题需要四重循环,拆成两个二重循环例子:POJ 2785:给定各有n个整数的四个数列A,B,C,D。从每个数列中各取一个数,使四个数的和为0.当一个数列中有多个相同数字时,把它们作为不同的数字看待。求出这样的组合的个数。void solve(){ //枚举从C和D中取出数字的所有...原创 2018-08-01 14:31:33 · 350 阅读 · 0 评论 -
【暑假集训笔记】栈与队列应用的一般思考方向
/**栈应用:1.单个栈应用 火车站题型:根本问题————给定两个字符串,请问是否可以通过栈的操作(给个容器,后进先出的操作)让两个字符串相等 解决思路:用栈模拟整个过程 code12.多个栈应用 计算器题型:涉及知识点:逆波兰表示法 例题:输入下面算式 计算出表达式的值(无负数,无括号,很简单) 5 + 6 * 7 / ...原创 2018-08-03 10:14:53 · 280 阅读 · 0 评论 -
【暑假集训笔记】STL之priority_queue优先队列的常用三种方法
/**常用三种方式: 1.默认输出最大值的声明: priority_queue<int> pq;//最大值优先队列 2.含参数输出最小值的声明: 几个参数只要注意下数据类型即可,<vector> 等参数不用包含头文件 priority_queue<int,vector<int>,greater<int> > pq;//...原创 2018-08-03 10:36:10 · 236 阅读 · 0 评论 -
【暑假集训笔记】最短路问题_Floyd算法与路径还原
//Floyed-Warshall算法 O(N^3)/*经典的多源最短路径算法作用: 1.求最短路。 2.判断一张图中的两点是否相连。思想: 3层循环; 第一层枚举中间点k,第二层与第三层枚举两个端点i,j。 若有dis[i][j] > dis[i][k] + dis[k][j] 则把dis[i][j]更新成dis[i][k] + dis[k][j] 一般我...原创 2018-08-15 20:44:37 · 546 阅读 · 0 评论 -
【暑假集训笔记】最短路算法_Bellman-Ford算法+SPFA算法(bellman的队列优化)+路径还原
/*Bellman-Ford: 作用: 单源最短路径;判断环路 条件: 有向图&无向图; 边权可正可负 实现过程的三步: 1、初始化所有的点,每一个点保存一个值,表示源点到这个点的距离其他点的值设为无穷大。 2、进行循环,从1到n-1,进行松弛计算。 3、遍历所有边,如果的d[v]大于d[u]+w(u,v)存在,则有从源点可达的权为负的回路。*/ i...原创 2018-08-15 21:11:14 · 286 阅读 · 0 评论