随笔分类 - 数据结构——其他
摘要:consistent hashing算法早在1997年就在论文Consistent hashing and random trees中被提出,目前在cache系统中应用越来越广泛;1基本场景比如你有N个cache服务器(后面简称cache),那么如何将一个对象object映射到N个cache上呢,你...
阅读全文
摘要:题意:给你n个地点的位置,他们是从小到大的顺序,然后每个位置都会有m个飞船,每个飞船能够传送一定的距离,如果使用该飞船会消耗掉一定的IQ,问如果一个人从1号位置开始选择飞船到达n号位置,最少的IQ花费是多少?思路:对于i位置与i+1位置,我们只要找出m个飞船中传送距离ds大于x[i + 1] - x[i]的花费IQ最少的即可。可是如何维护大于x[i + 1] - x[i]这个区间的里面最小的IQ消耗呢? 首先将相邻两点的距离求出来,然后从大到小排序,然后将m个飞船的创送距离从大到小排序,然后每次枚举到相邻两点之间的距离时,然后检查没有放入优先队列的可能比当前点的距离大的飞船,然后放进去,这样就
阅读全文
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1452题目:中文.....思路:单调队列维护最大最小,st记录起始位置,如果出现st到i的最大最小差值大于k,要么移动最大要么移动最小,我们只要移动那个坐标小的即可。//#pragma comment(linker,"/STACK:327680000,327680000") #include <iostream> #include <cstdio> #include <cmath> #in
阅读全文
摘要:http://codeforces.com/problemset/problem/264/ADIV2的C题,话说做了一个小时就回宿舍了,结果还是被楼管阿姨锁在了外边,无语啊。。就是一个简单的双向链表...模拟插入。 但是只是想着算出1/2 1/4 ...来然后排序,(1/2)^(10^6)啊,不吵数据类型才怪呢。。无语啊。。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cm
阅读全文
摘要:http://poj.org/problem?id=2104http://acm.hdu.edu.cn/showproblem.php?pid=2665题意:给定一个长度为n的序列,求一个区间[L,R]内第K大的数;思路:划分树模板题。给出个人感觉讲解比较好的连接:http://blog.sina.com.cn/s/blog_5f5353cc0100ki2e.htmlhttp://www.notonlysuccess.com/index.php/divide-tree/pkupoj2761一样的题目:个人理解:划分树就是按层划分区间,以排好序的mid为基准进行划分。建好树之后关键在于询问,我们
阅读全文
摘要:单调队列:http://baike.baidu.com/view/3771451.htmfoj 1894志愿者选拔http://acm.fzu.edu.cn/problem.php?pid=1894题意:中文略..思路:就是很单纯的单调队列,最最入门的单调队列,而且是很形象的排队问题。View Code #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#incl
阅读全文
摘要:http://poj.org/problem?id=1442看了好几遍才懂了题意:就是给你m个数(要进入box的),然后是n个数u[i .. n],每个u[i]表示询问:当前u[i]个数进入box之后,求第i小的数。。用两个优先队列分别建立大顶堆,小顶堆:小顶堆存放新加进来的数,大顶堆存放前边出现的数。。。小顶堆存放新加进来的数并且维持着小顶堆里面的最小值,一定大于大顶堆里面的所有值。大顶堆记录的是当前所有出现的数的最小的几个(个数是上一次出现的序列的个数)例如u[2] = 2-->u[3] = 6q2 : 3,1q1: -4=>q2: 1,-4q1: 3;=>q2: 1,-
阅读全文
摘要:http://poj.org/problem?id=2442题意很简单,思路就是任意的两个含有m个元素的序列求和,用o(nlgn)的堆来维护n个最小元素,最终得到的丢里面的元素就是所要求的。。。stl中堆得应用:STL里面的堆操作一般用到的只有4个:make_heap();、pop_heap();、push_heap();、sort_heap();他们的头文件函数是#include 首先是make_heap();他的函数原型是:void make_heap(first_pointer,end_pointer,compare_function);一个参数是数组或向量的头指针,第二个向量是尾指针。
阅读全文
摘要:http://poj.org/problem?id=3253View Code #include #include #include #include #define maxn 20007using namespace std;struct cmp{ bool operator() (int &a,int &b) { return a > b; }};int main(){ priority_queue,cmp>q; int n,i,sum,a; while (~scanf("%d",&n)) { while (!q.empty()...
阅读全文