数据结构
二十一画生
嚶其鳴矣求其友聲
展开
-
hdu 1394 Minimum Inversion Number(单点更新)
题意:给你N个数,要求统计它的所有形式的逆序对的最小值。它的所有形式的意思是,不断将数组开头的第一个数放到数组的最后面。分析:主要是利用线段树求逆序数,建的是一棵空树,然后每插入一个点之前,统计大于这个数的有多少个,直到所有的数都插入完成,就结束了逆序树的统计。要得出答案主要是利用了一个结论,如果是0到n的排列,那么如果把第一个数放到最后,对于这个数列,逆序数是减少y[i],而增加原创 2013-07-27 10:55:38 · 1389 阅读 · 0 评论 -
uva 11995 - I Can Guess the Data Structure!
大致题意:输入1表示push,2表示pop,输出:stack:一定是个栈;queue:一定是个队列;priority:一定是个优先队列;impossible:都不是;not sure:至少有两种可能。注意:它有可能在pop前已为空,所以要先判断empty()。#include#include#include#includeusing namespace s原创 2013-11-05 20:25:02 · 897 阅读 · 0 评论 -
uva 11991 - Easy Problem from Rujia Liu?
题意:给出一个包含n个整数的数组,你需要回答若干查询。每次询问两个整数k和v,shuc原创 2013-11-06 16:29:07 · 696 阅读 · 0 评论 -
uva 1203 - Argus
题意:Argus系统支持一个Register命令:Register Q_num Period该命令注册了一个触发器,它每Period秒就会产生一次编号为Q_num的事件。你的任务是模拟出前k个事件。如果事件同时发生,先处理Q_num小的事件。#include#includeusing namespace std;struct node{ int num,period,ti原创 2013-11-06 17:39:03 · 955 阅读 · 0 评论 -
uva 11997 - K Smallest Sums
题意:有k个整数数组,各包含k个元素。在每个数组中取一个元素加起来,可以得到 kk个和。求这些和中最小的k个值(从小到大输出)。#include#include#includeusing namespace std;struct node{ int s,b; node(int s,int b):s(s),b(b){}};bool operator < (node x,原创 2013-11-06 19:05:42 · 647 阅读 · 0 评论 -
uva 1428 - Ping pong (二叉索引树)
题意:一条大街上住着n个乒乓球爱好者,经常组织比赛切磋技术。每个人都有一个不同的技能值ai。每场比赛需要3个人:两名选手,一名裁判。他们有一个奇怪的规定,即裁判必须住在两名选手的中间,并且技能值也在两名选手之间。问一共能组织多少种比赛。#include#include#include#define mx 100000+10#define mm 20000+10using nam原创 2013-11-07 17:06:37 · 1136 阅读 · 0 评论 -
uva 1329 - Corporative Network
题意:有n个结点,初始时每个结点的父节点都不存在。你的任务是执行如下操作: I u v:把结点u的父节点设为v,距离为|u -v|除以1000的余数。输入保证执行指令前u没有父节点。 E u :询问u到根节点的距离。#include#include#define mx 20010using namespace std;int fa[原创 2013-11-06 20:48:22 · 707 阅读 · 0 评论 -
hdu 2795 Billboard
题意:有一块板,规格为h*w,然后有n张海报,每张海报的规格为1*wi,选择贴海报的位置是:尽量高,同一高度,选择尽量靠左的地方。要求输出每张海报的高度位置。因为最多只有二十万张海报,所以板的最大的长度不会超过二十万,但是要小心,如果板的长度小于n,我们还要用h来建树。我们可以在查询到它的位置的时候,同时去更新当前点的剩余长度,然后回溯更新所有祖先区间。保存它的查询位置。// Time 1原创 2013-07-30 21:28:27 · 1848 阅读 · 0 评论 -
线段树总结
出处:http://blog.csdn.net/shiqi_614/article/details/8228102#comments之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnlySuccess的博文“完全版线段树”里的大部分题目,其博文地址Here,然后也加入了自己做过的一些题目。整理时,更新了之前的代码风格,不过旧的代码仍然保留着。转载 2013-06-06 13:03:18 · 1022 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies? (线段树)
题意:模拟约瑟夫环。有N(1并离开这个圈,他卡片上的数字 A 表明了下一个离开的小孩,如果 A 是大于 0 的,则下个离开的是左手边第 A 个,如果是小于 0 的,则是右手边的第 A 个小孩。游戏将直到所有小孩都离开,在游戏中,第 p 个离开的小孩将得到 F(p) 个糖果,F(p) 是 p 的约数的个数,问谁将得到最多的糖果。输出最幸运的小孩的名字和他可以得到的糖果。 F(p原创 2013-08-02 09:26:22 · 1545 阅读 · 0 评论 -
POJ 2828 Buy Tickets
题意:有n个的排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos。要求把队伍最后的状态输出。逆向思维。我们可以这样考虑,最后一个人一定会得到当前队伍他想要的位置,如果我们往前一个阶段,倒数第二个人也一定能得到他想要的位置……,也就是说,我们可以这样处理,我们把最后一个人插入,然后忽略它,再把倒数第二个人插入。即,我们找出当前队伍他想要插入的位置pos的真正坐原创 2013-07-31 09:30:41 · 1559 阅读 · 0 评论 -
hdu 1754 I Hate It
题意:给你N个数,M个操作,操作分两类。(1)"QAB“,查询区间[A,B]内的最大值。(2)"UAB",将第A个数的值改成B。线段树-单点更新。// Time 843ms; Memory 6448K#include#include#define maxn 1<<19#define inf 1<<30using namespace std;int size,n,sm,al原创 2013-07-26 14:38:15 · 1484 阅读 · 0 评论 -
hdu 1166 敌兵布阵(线段树-单点更新)
题意:有N个兵营,每个兵营都给出了人数ai(下标从1开始),有四种命令,(1)”Addij",表示第i个营地增加j人。(2)“Sub i j”,表示第i个营地减少j人。(3)“Query ij",查询第i个营地到第j个营地的总人数。(4)”End“,表示命令结束。有三种操作:询问区间总和,增加某个兵营的兵的数目,减少某个兵营的兵的数目。实际上也只有两个。在更新的时候,每到一个区间就原创 2013-07-26 10:16:41 · 2001 阅读 · 0 评论 -
uva 11235 - Frequent values(RMQ问题)
题意:给出一个非降序排列的整数数组a1,a2,。。。an,你的任务是对于一系列询问(i,j),回答ai,ai+1,。。。,aj中出现次数最多的值所出现的次数。#include#include#include#define mx 100000+10#define max(x,y) (x)>(y) ? (x) : (y)using namespace std;int n,m,d原创 2013-11-07 20:17:50 · 1133 阅读 · 1 评论