巴特西
首页
Python
Java
PHP
IOS
Andorid
NodeJS
JavaScript
HTML5
priority_queue排序pair
priority_queue 中存放pair时,自定义排序的写法
struct cmp {template <typename T, typename U> bool operator()(T const &left, U const &right) { // 以 second 比较.输出结果为 Second 较大的在前 Second 相同时,先进入队列的元素在前. if (left.second < right.second) return true; return false; } }; // new. priority_queue
STL容器(Stack, Queue, List, Vector, Deque, Priority_Queue, Map, Pair, Set, Multiset, Multimap)
一.Stack(栈) 这个没啥好说的,就是后进先出的一个容器. 基本操作有: stack<int>q; q.push(); //入栈 q.pop(); //出栈 q.top(); //返回栈顶成员 q.size(); //返回栈成员个数 q.empty(); //判断是否为空栈 二.Queue(队列) 同上,先进先出的容器 基本操作有: queue<int>q; q.push(); //入队列 q.pop(); //出队列 q.front(); //返回最上面(最后进入)的成员 q
优先队列priority_queue排序
优先队列默认大顶堆,即堆顶元素是最大值 改成小顶堆时: priority_queue<int,vector<int>, greater<int> > Q;//注意最后这里> >需要有空格,不然默认右移运算符>> 或者结构体重载operator排序, 注意排序方式与大小顶堆相反
[CSP-S模拟测试]:轰炸行动(bomb)(塔尖+拓扑排序+语文)
题目描述 战狂也在玩<魔方王国>.他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸.小奇有n座城市,城市之间建立了$m$条有向的地下通道.战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市.每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市.非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在两个不同的城市$i$,$j$,它们在同一轮被轰炸,并且可以通过地道从城市$i$到达城市$j$,那么城市$i$的间谍可能因为撤离到城市$j$而被炸死.为了避免这一情况,
STL中pair容器的用法
1.定义pair容器 1 pair <int, int> p, p1; 2 //定义 [int,int] 型容器 //直接初始化了p的内容 pair<string,int>p(1,5); 定义一个pair类型数组 pair<int,int> p1[maxn] 2.交换函数 //p和p1都是pair容器 p.swap(p1);//交换两个容器的内容 //例: p={1,2}, p1={3,4} //运行之后, p={3,4}, p1={1,2} 3.访问pair容器中的值
GXOI/GZOI2019题解
GXOI/GZOI2019题解 P5300 [GXOI/GZOI2019]与或和 一眼题.. 显然枚举每个二进制位,答案就变成了全1子矩阵数量. 这个xjb推推,单调栈一下就行了. #include<bits/stdc++.h> #define il inline #define vd void #define mod 1000000007 typedef long long ll; il ll gi(){ ll x=0,f=1; char ch=getchar(); while(!isdig
多线程处理N维度topk问题demo--[c++]
问题 -对多维度特征进行topk排序,使用c++ 优先队列模拟最大堆. /* ---------------------------------- Version : ?? File Name : dm2.py Description : Author : xijun1 Email : Date : 2018/12/7 ----------------------------------- Change Activity : 2018/12/7 -------------------------
STL——配接器、常用算法使用
学习STL,必然会用到它里面的适配器和一些常用的算法.它们都是STL中的重要组成部分. 适配器 在STL里可以用一些容器适配得到适配器.例如其中的stack和queue就是由双端队列deque容器适配而来.其实适配器也是一种设计模式,该种模式是将一个类的接口转换成用户希望的另外一个接口.简单的说:就是需要的东西就在眼前,但却不能用或者使用不是很方便,而短时间又无法改造它,那我们就通过已存在的东西去适配它. STL中的适配器一共有三种: ①应用于容器的即容器适配器:比如stack和queue就是对
【刷题】BZOJ 4289 PA2012 Tax
Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权 N<=100000 M<=200000 Input Output Sample Input 4 5 1 2 5 1 3 2 2 3 1 2 4 4 3 4 8 Sample Output 12 Solution 这种边与边之间有特殊贡献的题目一般都是拆边为点 这题把每条边拆成两个点,把原来的点
统计学习方法c++实现之二 k近邻法
统计学习方法c++实现之二 k近邻算法 前言 k近邻算法可以说概念上很简单,即:"给定一个训练数据集,对新的输入实例,在训练数据集中找到与这个实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入分为这个类."其中我认为距离度量最关键,但是距离度量的方法也很简单,最长用的就是欧氏距离,其他的距离度量准则实际上就是不同的向量范数,这部分我就不赘述了,毕竟这系列博客的重点是实现.代码地址:https://github.com/bBobxx/statistical-learning k
【NOI 2018】归程(Kruskal重构树)
题面在这里就不放了. 同步赛在做这个题的时候,心里有点纠结,很容易想到离线的做法,将边和询问一起按水位线排序,模拟水位下降,维护当前的各个联通块中距离$1$最近的距离,每次遇到询问时输出所在联通块的信息. 离线的思路对满分做法有一定的启发性,很容易想到将并查集持久化一下就能支持在线了. 但是这个是两个$log$的,有卡常的风险也不是很方便写. 当时思考了一下就快速写完离线做法就去做其他题了. 对于这道题,有一个更好的做法:Kruskal重构树. 事实上如果你了解这个东西,那你就能很快的给出解,那
[POI2018]Prawnicy
题目大意: 有$n(n\le10^6)$个线段,每个线段覆盖的范围是$[l_i,r_i]$,要求从中选取$k(k\le10^6)$个线段使得这些线段覆盖范围的交集最大,求最大交集及任意一种方案. 思路: 对左端点排序,用堆维护右端点即可. #include<queue> #include<cstdio> #include<cctype> #include<algorithm> #include<sys/mman.h> #include<sy
【五一qbxt】day6 OI中的stl
from:why 很多很多part…… 1.pair: 相当于把两个变量放在一起: #include<utility> using namespace std; pair<TypeName1,TypeName2> VariableName; pair<int,int> x; pair<double,double> y; pair<int,double> z; pair< pair<int,int> ,int> a; 优点:
Dijkstra和堆优化
Dijkstra算法 由于我之前一直记的迪杰斯特拉的翻译导致我把dijkstra写成了dijstra--所以下文#define dijstra dijkstra 我以后叫她迪杰克斯歘! Dijskra是用来在有向图或者无向图中寻找任意两个点的最小距离的算法.它相较于spfa不会死掉(spfa死了),但是无法处理带负环的图和求最长路(除非加上一些奇怪的东西,我们这里是新手村不予讨论我不会) Dijskra的核心思想是先把所有边的边权进行从小到大的排序,再建一个记录起点到各个点的距离的dis数组并初
激!QTREE系列
我现在才开始刷 QTREE 是不是太弱了?算了不管他…… QTREE: 树链剖分裸题(据说 lct 会超时……该说是真不愧有 spoj 的气息吗?) #include <cstdio> #include <cstring> ; ; ; inline void swap(int & , int & ); inline int max(int, int); inline char getch(); inline int getint(); inline void put
BZOJ 1455
STL的基本用法 (居然能空间卡过去= =!!!) #include <cstdio> #include <ext/pb_ds/priority_queue.hpp> #include <functional> #include <algorithm> #include <utility> __gnu_pbds::priority_queue<std::pair<int,int>,std::greater<std::pai
P5304 [GXOI/GZOI2019]旅行者
题目地址:P5304 [GXOI/GZOI2019]旅行者 这里是官方题解 一个图 \(n\) 点 \(m\) 条边,里面有 \(k\) 个特殊点,问这 \(k\) 个点之间两两最短路的最小值是多少? \(n \leq 10^5, m \leq 5 * 10 ^5\) 假设我们把特殊点分成 \(A,B\) 两个集合,新建 \(s\) 连 \(A\) 集合的所有点,边权 \(0\) ,新建 \(t\) 连接 \(B\) 集合里的所有点,边权 \(0\) ,那么 \(s\) 到 \(t\) 的最短路
[CF1132G]Greedy Subsequences
[CF1132G]Greedy Subsequences 题目大意: 定义一个序列的最长贪心严格上升子序列为:任意选择第一个元素后,每次选择右侧第一个大于它的元素,直到不能选为止. 给定一个长度为\(n(n\le10^6)\)的序列\(A\),同时给定一个常数\(k\),求该序列的所有长度为\(k\)的子区间的最长贪心严格上升子序列的长度. 思路: 不难发现,若将每个点和右侧第一个大于它的元素相连,可以得到一个森林,其中每个结点对应的父结点为序列中右侧第一个大于它的元素.若没有区间长度为\(k\
洛谷P1848 书架
好,我一直以为书架是splay,然后发现还有个优化DP的书架.妃的书架 蓝书和PPT上面都讲了,应该比较经典吧. 题意: 有n个物品,每个都有宽,高. 把它们分成若干段,使得每段的最大值的总和最小.且每段的总宽度不超过L. n <= 100000 解: 首先有个很显然的DP是f[i] = min(f[j] + max(j + 1, i)), sum[i] - sum[j] <= L 然后如何优化呢?因为有max函数(非线性)所以难以单调队列.把决策打出来发现不单调.无计可施??? 发现当i固定
【刷题】BZOJ 2407 探险
Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则:每个溶洞和其他某些溶洞有暗道相连.两个溶洞之间可能有多条道路,也有可能没有,但没有一条暗道直接从自己连到自己.参赛者需要统一从一个大溶洞出发,并再次回到这个大溶洞. 如果就这么点限制,那么问题就太简单了,可是举办方又提出了一个条件:不能经过同一条暗道两次.这个条件让大家犯难了.这该怎么办呢? 到了大
【刷题】BZOJ 2069 [POI2004]ZAW
Description 在Byte山的山脚下有一个洞穴入口. 这个洞穴由复杂的洞室经过隧道连接构成. 洞穴的入口是一条笔直通向"前面洞口"的道路. 隧道互相都不交叉(他们只在洞室相遇). 两个洞室要么就通过隧道连接起来,要么就经过若干隧道间接的相连. 现在决定组织办一个'King's of Byteotia Cup' 比赛. 参赛者的目标就是任意选择一条路径进入洞穴并尽快出来即可. 一条路径必须经过除了"前面洞口"之外还至少要经过其他一个洞室.一条路径中一个洞不能重
热门专题
python杨辉三角
httpclient进行接口关联
两个clickhouse数据同步
burpsuite设置代理 火狐
windows server 2016 网卡驱动
52832一般都用在哪里
ubuntu 卸载nvm 和npm
ios安装socketrocket
xml操作可读可写吗
wpf 船体最大化不覆盖
html在ios中JsBarcode会显示数字
bootstrap异步追加select append失效
idea的input去掉默认值
handler.removeMessages 用法
搭建Jenkins实现自动化部署Jar
r语言支持向量机训练多元
adb devices 找不到 设备
solr中boost脚本
net core 支持的国产操作系统
parallelsdesktop不兼容