
牛客比赛
氯的平方
大一新生,写点东西抗遗忘
展开
-
线段树 (区间和 + 单点操作)
#include <set> #include <map> #include <queue> #include <stack> #include <cmath> #include <vector> #include <string> #include <cstring> #include <iostream> #include <algorithm> #define FAST ios::原创 2020-12-06 21:49:57 · 114 阅读 · 0 评论 -
GCD + 素数筛实现
题目: GCD问题题目 首先考虑最坏的情况,在这N个数字当中,先选出所有的素数 和1 组成最坏集合,这些由素数构成的集合中的任选两个数字的GCD结果都是1,再向这个集合中加入一个其他的数字,则一定会导致存在两个数字其GCD的结果大于1 (抽屉原理?)(但是要注意,当n小于4的时候,1,2,3全部都可以当作素数,则无法向其中再添加数字了) 代码: #include <set> #include <map> #include <queue> #include <stac原创 2020-12-06 15:58:53 · 170 阅读 · 0 评论 -
黑白边 + 克鲁斯卡尔算法
Acwing学习的时候没有给出KrusKal算法的板子,这道题刚好遇到了(Prim算法也可以 ,其实就是没有想到怎么做) 克鲁斯卡尔算法伪代码模板:(并查集实现) 读入所有的边 将边按照权值进行排序 从权值小的开始,依次将边的两个端点加入并查集中(前提是这两个端点不再同一个并查集里面),最后判断是否存在最小生成树的时候,判断cnt是否等于顶点数n即可。 黑色边题目: 黑白边题目 #include <set> #include <map> #include <queue>原创 2020-12-06 15:30:34 · 204 阅读 · 0 评论 -
第 K 小数字问题 (优先队列实现)
首先了解优先队列: 可以理解优先队列就是一个含有内部排序的队列,具有队列的一切属性,本质上是通过堆来实现的。 定义语法: priority_queue<Type, Container, Functional> Type 是数据类型 (注意:数据元素的类型可以是pair类型) Container 由数组实现的一些数据结构,如:vector,deque,不可以是List类型,就是存放元素的容器 Functional 是内部排序的方式 当使用的数据类型是基本的内置的数据类型的时候就可以直接传入类型来创原创 2020-12-06 14:53:57 · 269 阅读 · 0 评论 -
在一个很大的数组里面找两个数字使得其和在一定的范围内
题目: 这道题只要出现了双重循环,不管如何进行剪枝都会导致TLE。只能使用其他的方法。 AC代码(附讲解): 首先介绍两个函数: lower_bound 是经常用来对STL容器进行查找的函数,其前两个参数是容器的迭代器类型,分别是,查找范围的 begin() 迭代器 和 查找范围的 end() 迭代器 第三个参数是待查找的数值 num 函数返回的结果是容器中第一个大于等于num的值得下标。 upper_bonud 参数如上,函数返回的是第一个 大于 num 的值的下标 Tips: 1. 这两种查找的方原创 2020-11-30 21:46:56 · 370 阅读 · 0 评论 -
A 进攻
牛客月赛29 A题 (贪心 最大前缀)题目 这道题的题解采用了不申请数组的方式来模拟一个求最大价值前缀的过程,在我自己做题的过程中,也想到的维护最大的价值前缀,但是我采用的方式是申请一个长度为N的数组来存这个前缀,相当于提前打表,但是范围太大了,所以没有实现成功。 #include<iostream> #include<algorithm> using namespace std; const int N = 1e6 + 10; struct Base{ int d,v; }B原创 2020-11-15 17:08:57 · 140 阅读 · 0 评论