数据结构
Phoenix丶HN
这个作者很懒,什么都没留下…
展开
-
10:二叉排序树
总时间限制: 1000ms 内存限制: 128000kB描述依次给出n(0个整数,请你以这n个数创建一棵二叉排序树,这棵排序树的根节点为第一个数,并输出其中序遍历和后序遍历。输入共两行,第一行为整数n,第二行为n个整数输出共两行,第一行为中序遍历,第二行为后序遍历样例输入823 45 12 6 7 89 13 47样例输出6 7 12 13 23 45 47 89 7原创 2016-07-10 22:40:05 · 672 阅读 · 0 评论 -
bzoj1588 splay模板
#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pairP;const int INF=0x3f3f3f3f;const ll原创 2017-07-14 15:12:16 · 204 阅读 · 0 评论 -
数据结构之--Treap(hdu3726)
//可以用来求区间第K大。下一步,深入了解spaly#includeusing namespace std;typedef long long ll;int w[20010],vis[60010],pre[20010],cnt,n,m;ll ans;int num;struct p1{int a,b;}edge[60010];struct pp{int x,p;char op;}c原创 2017-07-18 12:46:54 · 365 阅读 · 0 评论 -
HDU5861(线段树好题)
题解:找到每一段路最开始的时间和结束的时间,然后一起统计。区间最值问题,首选线段树。可以先对m条边倒着更新一遍线段树,便可以知道没一个点最开始的时候在哪一条线段上。然后再正着跟新一遍,就知道每个点最终结束在哪一条线段。然后合并统计#includeusing namespace std;int node[200010*4];vectorin[200010],out[200010];voi原创 2017-07-21 21:32:33 · 348 阅读 · 0 评论 -
HDU5862(树状数组好题)
题意:给一些平行坐标轴的线段,。统计相交数题解:可以这样考虑,把所有与x轴平行的线段存起来,用来枚举。把与y轴平行的线段的左右端点存起来。这样在枚举x线段时。就需要看x线段的左端点左边有多少,右端点有多少,相减就是中间重合的。如何维护这些数据呢?当然就得用树状数组了。,简单粗暴#include#include#include#include#include#include#incl原创 2017-07-21 21:37:01 · 388 阅读 · 0 评论 -
spaly区间翻转,分裂,合并!UVA11922,UVA11996也是个不错的spaly
#include#include#includeusing namespace std;struct Node{ Node *ch[2]; int s,v,flip; int cmp(int k) { int d=k-ch[0]->s; if(d==1) return -1; return d<=0?0:1;原创 2017-07-18 19:31:24 · 462 阅读 · 0 评论 -
HDU5828(线段树好题,区间加,区间求根号,吉老师在51nod直播讲过这道题,相应的还有区间取模)
题解:区间加,区间和不用说。重点在区间取模,首先,就算一个很大的n,几次根号之后就会很小。我们可以思考一下,如果一个区间内的极差>1的时候,不断地进行整体加某个值然后开方,是没办法保持住这样的序列的(相邻两个极差都>1)。只有整个区间内的极差#include#include#include#include#include#include#include#include#in原创 2017-07-22 22:21:29 · 1090 阅读 · 0 评论 -
zoj3886(线段树,区间取模)
因为一个数最多只需要log(n)次就会变成1,而模数大于他本身,他又不会变化,最次每次o(n)修改区间,最多也不会多过log(n)次,所以复杂度是正确的。暴力修改就好#include#include#include#include#include#include#include#include#include#include#include#define nl n<<1#d原创 2017-07-23 16:56:39 · 582 阅读 · 0 评论 -
树状数组好题(codeforces828E)
题意:给你一个只包含四字母的字符串,用另一个字符串去匹配该字符串的一个区间,第二个字符串只是一个循环节,知道把区间全部匹配一次,计算相同的字母数。经典的单点更新和区间求和的问题(有没有感觉?)题解:因为只包含四种字母,第一感觉就想分块搞。但是又和前缀和没什么关系,因为得比较每一位。但是第二个字符串又只有10,相当于什么呢?把整个数列分成10块的,更新的时候就只需要看属于那一块,然后往后更新答案原创 2017-07-19 19:22:21 · 397 阅读 · 0 评论 -
HDU5775(树状数组)
分析:由冒泡算法可知,一个数是先往右移,再往左移。所有从后往前扫,看每一个数右边有几个比他大的数,那么就知道要往右边移动几次,左边的话,就看现在的位置和他本身的大小,谁小就在哪#include#include#include#include#include#include#include#include#include#include#include#include#def原创 2017-07-24 19:50:05 · 293 阅读 · 0 评论 -
超级读入挂HDU(6044)
#include #include #include typedef long long LL;namespace fastIO { #define BUF_SIZE 100000 //fread -> read bool IOerror = 0; inline char nc() { static char buf[BUF_SIZE], *原创 2017-07-26 14:02:20 · 933 阅读 · 3 评论 -
HDU5792(树状数组)
PS:思维还是太弱了,计算方法太神奇!题意:就是找四个不同的数,ad.算种数分析:简化一下问题,如果单纯求ad,树状数组求逆序对即可。但是这里a,b,c,d不能相同。那么就考虑一下怎么去重。枚举一个数,他左边比他小的数就可以当做a,相当于他是b。他左边比他大的数就是c,相当于他是d。同理,看右边是一样的。那样把左边所有小于当前数的数求和,大于的一样。乘积是什么。就是算可以重复的总种数。这时原创 2017-07-27 10:37:26 · 214 阅读 · 0 评论 -
HDU5809(KD-tree)
存一波KD-tree模板,感觉这个板子不错,挺全的,封装了。#include#define mp Pointusing namespace std;typedef long long ll;const ll inf=9e18;const int MAXN=1e5+5;namespace KD_Tree{ struct node { node *ch[2原创 2017-07-28 19:32:02 · 332 阅读 · 0 评论 -
“玲珑杯”ACM比赛 Round #19 B(RMQ大法好啊,比线段树快得多!!!!)
#includeusing namespace std;typedef long long ll;int a[200010];int maxl[200010*2][30];int minl[200010*2][30];int n,kk;void S_table(){ int l = int(log((double)n)/log(2.0)); for (int j=1原创 2017-07-29 17:03:13 · 571 阅读 · 0 评论 -
图灵杯splay
点击打开链接s/*splay树每次颠倒把要操作的区间转成一棵子树,然后更新。每次把p转到根,然后翻转左子树,删除根。本题的话每个结点序号就是最开始的位置。sp树中第i个结点的序号就是第i个数的初始位置。所以对每个数排序,记录初始位置,就可以在树中直接找到要操作的结点。*/#include#include#include#includeusing namespace s原创 2017-07-15 09:38:42 · 222 阅读 · 0 评论 -
双向队列
12:双向队列查看提交 统计提问 总时间限制: 5000ms 内存限制: 65536kB 描述新建的 Beijing Institute Group 银行 (BIG-Bank) 在北理工开了一个营业点,他们装备了由 IBM Coral Studio 提供的现代化计算环境,使用现代的信息技术。通常,每个银行客户都有唯一的用来标识身份的正整数 K ,而每当他来到原创 2016-07-10 22:38:55 · 333 阅读 · 0 评论 -
L2-004. 这是二叉搜索树吗?
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。 给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。 输入格式: 输入的第一原创 2016-07-07 15:41:47 · 607 阅读 · 1 评论 -
L3-003. 社交集群
在社交网络平台注册时,用户通常会输入自己的兴趣爱好,以便找到和自己兴趣相投的朋友。有部分兴趣相同的人们就形成了“社交集群”。现请你编写程序,找出所有的集群。输入格式: 输入的第一行给出正整数N(Ki: hi[1] hi[2] ... hi[Ki]其中Ki(>0)是第i个人的兴趣的数量,hi[j]是第i个人的第j项兴趣的编号,编号范围为[1, 1000]内的整数。输出格式:原创 2016-07-07 15:38:42 · 274 阅读 · 0 评论 -
二叉树
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式: 输入第一行给出一个正整数N(输出格式: 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:71 2 3 4 5 6 74 1 3 2 6 5 7原创 2016-07-06 13:01:39 · 319 阅读 · 0 评论 -
建堆
L2-012. 关于堆的判断时间限制 400 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 陈越将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种: “x is the root”:x是根结点;原创 2016-07-06 12:59:02 · 488 阅读 · 0 评论 -
L2-007. 家庭房产
时间限制 400 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 陈越给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入格式: 输入第一行给出一个正整数N(编号 父 母 k 孩子1 ... 孩子k 房产套数原创 2016-07-05 10:15:25 · 623 阅读 · 0 评论 -
并查集 最大集合并且按顺序输出集合内元素。
00033:Problem B 多线程并发查看 提交统计提问总时间限制: 1000ms 内存限制: 65536kB 描述何谓并发?最简单和最基本的并发,是指两个或多个独立的活动同时发生,并发在生活中随处可见,我们可以一边说话一边走路,也可以两只手同时作不同的动作,还有我们每个人过着相互独立的生活----操作系统老师站在讲台上讲着多任务操作系统,而你在原创 2016-05-30 00:18:16 · 1636 阅读 · 0 评论 -
poj3468 树状数组的区间快速更新和查询
直接用树状数组会超时;所以必须快速更新。/*分析:由于本题更新的时候是区间更新 所以不能直接去一个个更新区间内的点,肯定会超时 对于每次更新C(a,b,d)表示区间[a,b]内的值增加d 用ans[a]表示a~n区间元素增加的值,所以对于C(a,b,d)有:ans[a]+=d,ans[b+1]-=d; 则每次询问的时候Q(a,b),求a~b的和SUM=sum(a,b)+转载 2016-04-25 23:54:03 · 352 阅读 · 0 评论 -
手动建栈维护最大值,用两个栈模拟队列!!
J.队列极值时间限制: 1000ms 内存限制: 65535KB通过次数: 6总提交次数: 58问题描述转眼间【HuJie】在灵隐寺待了将近半年,别说和日剧里的和尚似的泡到妹子结婚,就是连妹子的人影都见不着。好歹我们【HuJie】也是一表人才,英俊潇洒的,怎么能孤独终老呢?他才明白日剧里都是骗人的,还是回去好好的念书吧。但是,【HuJie】偷偷出家的日子里已经旷了不少课了,原创 2017-06-02 16:05:21 · 420 阅读 · 0 评论 -
主席树模板(区间第k大!)hdu2665
http://www.cnblogs.com/zyf0163/p/4749042.html#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;co原创 2017-06-02 18:33:43 · 279 阅读 · 0 评论 -
当我真正搞懂主席树!!!
题目链接Problem I: qwb VS 去污棒Time Limit: 2 Sec Memory Limit: 256 MBSubmit: 64 Solved: 20[Submit][Status][Web Board]Descriptionqwb表白学姐失败后,郁郁寡欢,整天坐在太阳底下赏月。在外人看来,他每天自言自语,其实他在和自己的影子“去污棒”原创 2017-06-02 19:43:32 · 464 阅读 · 0 评论 -
倍增新姿势
qwb打算向学姐表白,可是学姐已经受够了他的骚扰,于是出了一个题想难住他:已知一幅n个点m条边的无向图,定义路径的值为这条路径上最短的边的长度,现在有 k个询问,询问从A点到B点的所有路径的值的最大值。qwb听完这个问题很绝望啊,聪明的你能帮帮他吗?Input一组数据。第一行三个整数n,m,k (1第2..m+1行:三个正整数:X, Y, and D (1 15原创 2017-06-02 21:03:41 · 223 阅读 · 0 评论 -
怒艹一波KD-tree
KDtree可以快速求多维空间一个点离他最近的点。这个题是HDU5592.裸的KD-tree#includeusing namespace std;typedef long long ll;const int inf=1e9+7;int root,n,m,key;ll len;ll sqr(ll x){ return x*x;}struct node{ int原创 2017-08-14 16:51:02 · 321 阅读 · 0 评论