板子题,只是记得负数加fix最方便

#include <cstdio>
const int A=,N=;
namespace FIFO
{
char ch,B[<<],*S=B,*T=B;
#define getc() (S==T&&(T=(S=B)+fread(B,1,1<<20,stdin),S==T)?0:*S++)
#define isd(c) (c>='0'&&c<='9')
int aa,bb;int F(){
while(ch=getc(),!isd(ch)&&ch!='-');ch=='-'?aa=bb=:(aa=ch-'',bb=);
while(ch=getc(),isd(ch))aa=aa*+ch-'';return bb?aa:-aa;
}
}
#define gi FIFO::F()
struct Trie{
Trie *ch[];int size;
}*root[N],*null,node[(<<)+];
int n,m,sz=;
int main(){
freopen("kth.in","r",stdin);freopen("kth.out","w",stdout);
null=node,null->ch[]=null->ch[]=null,root[]=null;
n=gi,m=gi;for(register int i=,x;i<=n;i++){
root[i]=node+sz,sz++,x=gi;register Trie *p=root[i],*last=root[i-];
for(register int i=A;i>=;i--)
p->ch[(x>>i)&]=node+sz,sz++,p->ch[((x>>i)&)^]=last->ch[((x>>i)&)^],
p=p->ch[(x>>i)&],last=last->ch[(x>>i)&],p->size=last->size+;
}
register int x,y,k;while(m--){
x=gi,y=gi,k=gi;register Trie *a=root[x-],*b=root[y];register int ret=;
for(register int i=A;i>=;i--)
if(b->ch[]->size-a->ch[]->size>=k)a=a->ch[],b=b->ch[];
else ret|=(<<i),k-=b->ch[]->size-a->ch[]->size,a=a->ch[],b=b->ch[];
printf("%d\n",ret);
}
}

【COGS 930】 [河南省队2012] 找第k小的数

#include <cstdio>
const int A=,N=,fox=;
namespace FIFO
{
char ch,B[<<],*S=B,*T=B;
#define getc() (S==T&&(T=(S=B)+fread(B,1,1<<20,stdin),S==T)?0:*S++)
#define isd(c) (c>='0'&&c<='9')
int aa,bb;int F(){
while(ch=getc(),!isd(ch)&&ch!='-');ch=='-'?aa=bb=:(aa=ch-'',bb=);
while(ch=getc(),isd(ch))aa=aa*+ch-'';return bb?aa:-aa;
}
}
#define gi FIFO::F()
struct Trie{
Trie *ch[];int size;
}*root[N],*null,node[(<<)+];
int n,m,sz=;
int main(){
freopen("kthnumber.in","r",stdin);freopen("kthnumber.out","w",stdout);
null=node,null->ch[]=null->ch[]=null,root[]=null;
n=gi,m=gi;for(register int i=,x;i<=n;i++){
root[i]=node+sz,sz++,x=gi+fox;register Trie *p=root[i],*last=root[i-];
for(register int i=A;i>=;i--)
p->ch[(x>>i)&]=node+sz,sz++,p->ch[((x>>i)&)^]=last->ch[((x>>i)&)^],
p=p->ch[(x>>i)&],last=last->ch[(x>>i)&],p->size=last->size+;
}
register int x,y,k;while(m--){
x=gi,y=gi,k=gi;register Trie *a=root[x-],*b=root[y];register int ret=;
for(register int i=A;i>=;i--)
if(b->ch[]->size-a->ch[]->size>=k)a=a->ch[],b=b->ch[];
else ret|=(<<i),k-=b->ch[]->size-a->ch[]->size,a=a->ch[],b=b->ch[];
printf("%d\n",ret-fox);
}
}

【COGS 1534】 [NEERC 2004]K小数

【COGS 1534】 [NEERC 2004]K小数 &&【COGS 930】 [河南省队2012] 找第k小的数 可持久化01Trie的更多相关文章

  1. COGS 930. [河南省队2012] 找第k小的数

    题目描述 看到很短的题目会让人心情愉悦,所以给出一个长度为N的序列A1,A2,A3,...,AN, 现在有M个询问,每个询问都是Ai...Aj中第k小的数等于多少. 输入格式 第一行两个正整数N,M. ...

  2. COGS 930. [河南省队2012] 找第k小的数 主席树

    主席树裸板子 #include<cstdio> #include<iostream> #include<algorithm> #define MAXN 100005 ...

  3. [河南省队2012] 找第k小的数

    ★★☆   输入文件:kth.in   输出文件:kth.out   简单对比时间限制:1 s   内存限制:128 MB 题目描述 看到很短的题目会让人心情愉悦,所以给出一个长度为N的序列A1,A2 ...

  4. 第 k 小的数

    一.寻找两个有序数组的中位数 1.1 问题描述 给定两个大小为 m 和 n 的不同时为空的有序数组 nums1 和 nums2.找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m ...

  5. 每天一道算法题目(18)——取等长有序数组的上中位数和不等长有序数组的第k小的数

    1.取上中位数 题目: 给定两个有序数组arr1和arr2,两个数组长度都为N,求两个数组中所有数的上中位数.要求:时间复杂度O(logN).      例如:          arr1 = {1, ...

  6. 第K 小数

    [问题描述]有两个正整数数列,元素个数分别为N和M.从两个数列中分别任取一个数相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少.[输入格式]输入文件名为number.in.输入文件包 ...

  7. 数组第K小数问题 及其对于 快排和堆排 的相关优化比较

    题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...

  8. Bsoj 1322 第K小数

    第K小数 Description 现在已有N个整数,你有以下三种操作: 1 A:表示加入一个值为A的整数: 2 B:表示删除其中值为B的整数: 3 K:表示输出这些整数中第K小的数: Input 第一 ...

  9. 算法打基础——顺序统计(找第k小数)

    这次主要是讲如何在线性时间下找n个元素的未排序序列中第k小的数.当然如果\(k=1 or k=n\),即找最大最小 数,线性时间内遍历即可完成,当拓展到一般,如中位数时,相关算法就值得研究了.这里还要 ...

随机推荐

  1. 源码安装CentOs7下的PHP7

    首先安装APACHE环境,直接用yum安装 yum install httpd httpd-devel /etc/httpd/ systemctl start httpd.service #启动apa ...

  2. Preparing Cities for Robot Cars【城市准备迎接自动驾驶汽车】

    Preparing Cities for Robot Cars The possibility of self-driving robot cars has often seemed like a f ...

  3. 【Markdown】Markdown的使用(自用)

    # 欢迎使用 Cmd Markdown 编辑阅读器 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 -- 我们为记录 ...

  4. 清华大学《C++语言程序设计基础》线上课程笔记02---类与对象

    类与对象 public是类的对外访问接口: 类内初始值 在定义类时对数据成员写初始值,在创建对象的时候,会使用类内初始值初始化数据成员: class Clock { public: void show ...

  5. LocalDate相关方法

    getYear() int 获取当前日期的年份 getMonth() Month 获取当前日期的月份对象 getMonthValue() int 获取当前日期是第几月 getDayOfWeek() D ...

  6. 三种block

    block的实现原理是C语言的函数指针. 函数指针即函数在内存中的地址,通过这个地址可以达到调用函数的目的. Block是NSObject的子类,拥有NSObject的所有属性,所以block对象也有 ...

  7. 【MVC】 小问题

    [MVC] 小问题 1. url 传参中文乱码 : encodeURIComponent 转码 2. RedirectToAction 重定向 : ajax 调用无效, 直接 url 访问有效 3. ...

  8. (1)分布式下的爬虫Scrapy应该如何做-安装

    关于Scrapy的安装,网上一搜一大把,一个一个的安装说实话是有点麻烦,那有没有一键安装的?答案显然是有的,下面就是给神器的介绍: 主页:http://conda.pydata.org/docs/ 下 ...

  9. 「日常训练」「小专题·图论」Domino Effect(1-5)

    题意 分析 这题几乎就是一条dijkstra的问题.但是,如何考虑倒在中间? 要意识到这题求什么:单源最短路的最大值.那么有没有更大的?倒在中间有可能会使它更大. 但是要注意一个问题:不要把不存在的边 ...

  10. appium + Python + iOS 滑屏方法(appium版本大于1.5)

    之前一直在搞android的自动化,滑动操作一直都用swipe(),比如: he1 = int(dr.get_window_size()['height'] * 0.8)he2 = int(dr.ge ...