【优先队列】POJ1442-Black Box】的更多相关文章

题目链接: Black Box 题意: 给一个序列,m个询问,每个询问是求前x个数中的第i小是多少; 思路: Treap的入门题目;Treap能实现STL的set实现不了的功能,如名次树(rank tree)rank tree 支持两种新操作,一个是找出第k小元素,一个是找出x的的rank; AC代码: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm>…
                                                  Black Box 唉,一天几乎就只做了这道题,成就感颇低啊! 题意:有一系列插入查找操作,插入每次在有序数列中插入一个数,保证插入后数列还是有序,初始数列为空,每次查询一个排名为i的数,第i次查询排名为i的数.给你两个数列,第一个是插入数的顺序,第二个是每次查询发生在插入第U(i)个数之后.具体看样例,说实话我也理解了挺久,数列1 2 6 6 表示的是第一次查询是在插入第一个数之后,第二次查询是…
The Black Case 好啊! 首先,读题很艰难... 读完题,发现是求第k小的数,那么我们用splay水过对顶堆水过即可. #include <cstdio> #include <queue> ; // poj 1442 黑箱 struct DeHeap { std::priority_queue<int> DOWN; std::priority_queue<int, std::vector<int>, std::greater<int&…
[思路] 建立一个小堆和一个大堆.大堆用来存放第1..index-1大的数,其余数存放在大堆,小堆的堆顶元素便是我们要求出的第index大的数.每次插入一个A(n),必须保证大堆中数字数目不变,故先插入小堆中.若此时小堆堆顶小于大堆堆顶,则交换堆顶元素:每次Get(),输出小堆的堆顶元素,并将它并入大堆中. [易错点] Get()的While循环必须放在插入之后进行判断,否则若放在插入之前写作 while (j<N && u[j]==i),当不再插入A(n)时,剩下的Get()将不再…
用大根堆和小根堆分别存放前$i-1$大的元素前$k-i$小的元素. 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆. 因为$i$值每进行一次自增$1$,所以每次$get$操作后将小根堆顶弹出存入大根堆. #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #in…
Treap,简单的来说就是Tree+Heap,是一颗平衡树,每个节点有两个信息:1.key:当前节点的关键字 :2.fix:当前节点优先级.key满足二叉排序数的性质,即左儿子都比当前节点小,右儿子都比当前节点大(或相等),fix是一个随机的数,满足小根堆(或大根堆)的性质,fix是为了防止Treap退化成链表的简单优化策略. 如下面的一颗Treap: Treap可以进行下面几种操作:插入,查询第k大,旋转,还有其他一些基本操作和一些高级的操作,这里暂不作介绍. 1.插入元素 Treap的关联形…
来源poj1442 Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty and i equals 0. This Black Box processes a sequence of commands (transactions). There are two…
Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty and i equals 0. This Black Box processes a sequence of commands (transactions). There are t…
Black Box Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7099   Accepted: 2888 Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empt…
Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty and i equals 0. This Black Box processes a sequence of commands (transactions). There are t…
Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty and i equals 0. This Black Box processes a sequence of commands (transactions). There are t…
优先队列..刚开始用蠢办法,经过一个vector容器中转,这么一来一回这么多趟,肯定超时啊. 超时代码如下: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <cstdlib> #include <string> #include <vector> #i…
Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty and i equals 0. This Black Box processes a sequence of commands (transactions). There are t…
Black Box Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8637   Accepted: 3542 Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empt…
给n个数,依次按顺序插入,第二行m个数,a[i]=b表示在第b次插入后输出第i小的数 *解法:写两个优先队列,q1里由大到小排,q2由小到大排,保持q2中有i-1个元素,那么第i小的元素就是q2的top 而且注意到每次输出第i小的数i都是递增的 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #include…
题目地址:POJ 1442 这题是用了两个优先队列,当中一个是较大优先.还有一个是较小优先. 让较大优先的队列保持k个.每次输出较大优先队列的队头. 每次取出一个数之后,都要先进行推断,假设这个数比較大优先的队列的队头要小,就让它增加这个队列.队列头移到较小优先的队列中.然后当较大优先的数不足k个的时候,就让较小优先的队列的队头移到较大优先的队头中. 代码例如以下. #include <iostream> #include <cstdio> #include <string&…
Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10890   Accepted: 4446 Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty and i e…
题意:你有\(n\)个礼物,礼物有自己的种类,你想将它们按种类打包送人,但是打包的礼物数量必须不同(数量,与种类无关),同时,有些礼物你想自己留着,\(0\)表示你不想送人,问你在送出的礼物数量最大的同时,尽可能的使自己喜欢的留下来,输出能送出的最大礼物数,以及这些礼物中自己不喜欢的数目. 题解:首先,我们肯定要让送出的礼物数最大,同时喜欢的最小,也就是送的礼物中,尽量让它的\(f\)是\(1\).这题考虑贪心,我们可以先对礼物数量进行排序,礼物数量相同让\(1\)多的排在前面,全部丢进优先队列…
题目:http://poj.org/problem?id=1442 题意:n,m,分别是a数组,u数组的个数,u[i]w为几,就加到a几,然后输出第i 小的 刚开始用了一个小顶堆,超时,后来看了看别人的 代码,很巧妙的设计 #include<stdio.h> #include<queue> using namespace std; ]; int main() { int n,i,m,j,u; priority_queue< int,vector<int>,less…
题目链接:http://poj.org/problem?id=1442 思路分析: <1>维护一个最小堆与最大堆,最大堆中存储最小的K个数,其余存储在最小堆中; <2>使用Treap构造名次树,查询第K大数即可; 代码如下(堆的用法): #include<iostream> #include<queue> using namespace std; struct cmp1 { bool operator() ( const int a, const int b…
浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=1442 用对顶堆维护第\(k\)小即可.保持小根堆大小逐渐递增就行. 时间复杂度:\(O(mlogn)\) 空间复杂度:\(O(n)\) 代码如下: #include <cstdio> #include <algorithm> using namespace std; const int maxn=3e4+5; int…
Black Box Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8754 Accepted: 3599 Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty an…
Description Imagine you are standing inside a two-dimensional maze composed of square cells which may or may not be filled with rock. You can move north, south, east or west one cell at a step. These moves are called walks. One of the empty cells con…
头炸了啊,只做出L题,前两天刚看的Shawn zhou的博客学习的,幸亏看了啊,否则就爆零了,发现题目都是经典题,线段树,KMP,我都没看过,最近又在复习考研,真后悔大一大二没好好学习啊,得抽时间好好补一下了.还报名了蓝桥杯啊,心里好没底... # Title A Watto and Mechanism B Infinite Inversions C Pashmak and Parmida's problem D Balanced Lineup E Snowflake Snow Snowflak…
11733274 2014-09-26 12:42:31 Accepted 5040 62MS 1592K 4848 B G++ czy 先转一个优先队列的用法: http://www.cppblog.com/shyli/archive/2007/04/06/21366.html 优先队列用法 在优先队列中,优先级高的元素先出队列. 标准库默认使用元素类型的<操作符来确定它们之间的优先级关系. 优先队列的第一种用法,也是最常用的用法: priority_queue<int> qi; 通过…
题目链接http://120.78.128.11/Contest.jsp?cid=18 题面不贴了 都是英文题,看的我心力憔悴 =7= 一.Ugly Numbers 题目说一个数的质因数只包含2.3或者5(一个或多个),就是丑陋数.拜托,为啥这些数就丑陋了.然后题目特别说明第一个丑陋数是1 题目多组数据输入到0为止,然后输出第n个丑陋数. 解题思路就是对于一个丑陋数k,那么一定有2*k.3*k和5*k也是丑陋数,所以按照这个思路入队模拟打表即可 值得注意的是,对于2*k1来说可能和 3*k2重复…
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network Address Translation) Bridged Adapter 桥接模式 Internal 内部网络模式 Host-only Adapter 主机模式 具体的区别网上的资料很多,就不再描述了,下面是一个最直接有效的配置,配置CentOS7虚拟机里面能上外网,而主机与CentOS7虚拟机也…
  OSWatcher Balck Box简介 OSWatcher Black Box (oswbb)是Oracle开发.提供的一个小巧,但是实用.强大的系统工具,它可以用来抓取操作系统的性能指标,用于辅助监控系统的资源使用.其安装部署.卸载都非常简单:资源消耗也比较小,原理也十分简单,它通过调用OS的的一些命令(例如vmstat.iostat等)来采集.存储CPU/Memory/Swap/Disk IO/Nentwork相关数据.安装和运行oswbba可以帮助在性能诊断时提供丰富多样的各类性能…
使用packer制作vagrant box:centos 制作vagrant box,网上有教程,可以自己step by step的操作.不过直接使用虚拟在VirtualBox中制作vagrant box非常的费劲.网上有操作debian/ubuntu相关的文章,放2篇在这里供参考: 英文 How to Create and Share a Vagrant Base Box 中文 制作 Vagrant Box 简明教程. 做到快结束的时候,就不知道如何解决了.后来发现有个Packer工具.就简单…
1. 预备知识 (1) 基本概念     如图,(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树.树中的每一个结点对应数组中的一个元素.除了最底层外,该树是完全充满的,而且从左向右填充.堆的数组A包括两个属性:A.length给出了数组的长度:A.heap-size表示有多少个堆元素保存在该数组中(因为A中可能只有部分位置存放的是堆的有效元素).     由于堆的这种特殊的结构,我们可以很容易根据一个结点的下标i计算出它的父节点.左孩子.右孩子的下标.计算公式如下: parent(i) =…