算法题解--数据结构
文章平均质量分 80
ciociooo
这个作者很懒,什么都没留下…
展开
-
Difference NOIp2013-Training Series #1
Description数列A1,A2, ...,AN,Q 个询问(Li;Ri),ALi,ALi+1,...,ARi 是否互不相同Input第1 行,2 个整数N;Q, 第2 行,N 个整数A1,A2,...,AN Q 行,每行2 个整数Li;RiOutput对每个询问输出一行,“Yes” 或者“No”Sample Input4 21 2 3 21 32原创 2013-11-08 10:34:44 · 1021 阅读 · 0 评论 -
【CQOI 2006】 简单题
Description 有一个n个元素的数组,每个元素初始均为0。有m条指令,要么让其中一段连续序列数字反转——0变1,1变0(操作1),要么询问某个元素的值(操作2)。例如当n=20时,10条指令如下: Input 第一行包含两个整数n,m,表示数组的长度和指令的条数,以下m行,每行的第一个数t表示操作的种类。若t=1,则接下来有两个数L, R (LOutput每原创 2013-10-26 15:03:06 · 2263 阅读 · 0 评论 -
【HZOI】 赏花
Description衡水湖为了迎接国际马拉松比赛,在跑道旁种了一排花,每朵花都有一种颜色色,共有N 朵。 现在 sky 和 leaf 到衡水湖赏花,leaf 总会问 sky 一些问题,比如第l朵花到第r朵花之间能看到多少种颜色的花? sky 算得木有那么快,于是请你来帮帮他。Input第一行一个数N 接下来一行N 个数Ci,表示花的颜色 接下来一行一个数M 接下来原创 2013-10-04 19:18:50 · 1117 阅读 · 0 评论 -
POJ 2761 静态区间K大
。。可持久化线段树模板题具体讲解看CLJ神犇的论文,总之函数式编程的关键就是不要赋值,每次都新建节点就好了。【代码】/************************ ID:Ciocio LANG:C++ DATE:2014-1-22 TASK:Feed the dogs************************/#include #include原创 2014-01-24 13:55:58 · 1114 阅读 · 0 评论 -
HDU 4757 可持久化字典树(Trie)
【题目大意】 一颗无根树,每个节点有权值,每次提问x,y,z,回答节点x到y的唯一路径上xor z的最大值。【分析】 Trie保存每个2进制位,然后类似贪心的遍历一次即可,遍历的时候,用x,y,lca,falca的各个版本来维护是否有串即可。【代码】/*********************** ID:Ciocio LANG:C++原创 2014-01-24 14:02:18 · 1363 阅读 · 0 评论 -
CVS
原题地址:点击打开链接【分析】。。函数式链表【代码】/************************** ID:Ciocio LANG:C++ DATE:2014-1-26 TASK:CVS**************************/#include #include #include #include #in原创 2014-01-26 23:26:07 · 700 阅读 · 0 评论 -
猴子大王 --左偏树
题目地址:点击打开链接【分析】...左偏树裸题【代码】/************************* ID:Ciocio LANG:C++ DATE:2014-1-27 TASK:monkey king*************************/#include #include #include #inclu原创 2014-01-27 15:54:23 · 795 阅读 · 0 评论 -
BZOJ 3339 Rmq Problem
【题目地址】点击打开链接【题目大意】给出长度为N的数字序列A[],Q个提问,每次询问为l,r,输出区间[l,r]的mex。mex{S}定义为自然数(包括0)中最小的,不在集合S中的值。N,Q,A[]范围均为20w级别(尼玛,题目名字跟意思毫无关系啊有木有)【分析】我们可以预处理区间[1,x]的mex,用数组Mex[x]记录。 并用一棵线段树来保存区间信息原创 2014-01-29 21:06:09 · 1191 阅读 · 0 评论 -
【JLOI2013】删除物品 --树状数组
Description箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆。 (2)所有物品都是一样的,但是它们有不同的优先级。 (3)你只能够移动某堆中位于顶端的物品。 (4)你可以把任意一堆中位于顶端的物品移动到其它某堆的顶端。若此物品是当前所有物品中优先级最高的,可以直接将之删除而不用移动。 (5)求出将所有物品删除所需的最小步数。删除操作不计入步数之原创 2014-02-04 18:55:52 · 902 阅读 · 0 评论 -
【HNOI2012】 永无乡
【题目地址】点击打开链接【分析】平衡树的启发式合并,可以证明是O(nlogn)的。【代码】#include #include #include #include #include #include #include using namespace std;#define rep(i,a,b) for(int i=(a);i<=(b);++i)#原创 2014-02-17 17:14:54 · 969 阅读 · 0 评论 -
动态区间k小问题
【分析】 其实就是在静态区间k小的基础上,利用了树状数组的思想。然后利用sz的可加性,用l-1,r的版本来维护一个区间[l,r]的sz。其实每个节点用一般的线段树即可,只需要注意动态添点避免爆空间,但我懒得写了,就用可持久化水过了。【代码】/**************************** ID:Ciocio LANG:C++原创 2014-01-29 22:14:33 · 807 阅读 · 0 评论 -
【PYC#1 欢乐赛】 题解
【题目地址】点击打开链接【分析们】【T-1】树状数组+Trie树【T-2】首先显然这是个堆,这个堆以位置为关键字,且形状固定。我们要做的就是将数字1~N填入堆中,并且令这些数字也满足堆性质。考虑我们有一个以x为根的堆,有i个数字可以填。我们用M[i]表示以i为根的堆的结点个数,可以逆序O(N)求得。用f[i]表示有i个数的方案数。我们得到一个原创 2014-02-23 15:57:00 · 1449 阅读 · 3 评论 -
Splay维护区间
Description给你一个长度为N的序列{ai}和M个操作 1.查询第k个数的值 2.将第k个数增加d 3.查询一段区间的和 4.查询一段区间的最大值 5.将一段区间镜面翻转(例如序列{1,2,3,4,5,6},将从2到5的区间翻转后得到序列{1,5,4,3,2,6}) 对于除操作2,5以外的操作,输出相应的答案Input第一行两个正整数N,M 第二行N原创 2014-02-11 22:18:57 · 1054 阅读 · 0 评论 -
【ZJOI2013 DAY1】K大数查询 --树套树水题
Description时限:2s 有n 个位置和m 个操作。操作有两种,每次操作如果是1 a b c 的形式,表 示往第a 个位置到第b 个位置每个位置加入一个数c。如果操作形如2 a b c 的形 式,表示询问从第a 个位置到第b 个位置,第c 大的数是多少。Input第一行两个数n,m。意义如题目描述。 接下来m 行每行形如1 a b c 或者2 a b c 如题目原创 2014-02-08 23:55:54 · 1156 阅读 · 0 评论 -
【CTSC 2008】 网络管理 --树链剖分+树状数组+Trie树
【题目大意】给定一颗点上带权的树,每次可以修改某点的权值,或者询问两点u,v树上唯一路径的第k大权值。【分析】这类树上路径问题直接轻重权树链剖分就好啦。。但是是询问第k大,所以我们用一个树状数组套Trie树维护区间权值即可。。注意用BFS来剖分避免爆栈【代码】#include #include #include #include #inclu原创 2014-02-15 23:23:54 · 928 阅读 · 0 评论 -
【KpmCup#0 省选模拟赛】题解
【题目地址】【T-1】很明显的差分约束系统,判负环。但是裸的要超时,我们注意到一个负环必定在一个强连通分量中。于是我们先求出SCC,再判负环。只需要判断入队次数大于sqrt(N)即可,虽然这样是有反例的,但大多数数据是能过的。【T-2】斜率优化dp我们可以得到一个dp方程: f[i]=min{f[j]+sigma(b[k]*(i原创 2014-02-20 16:45:11 · 1513 阅读 · 0 评论 -
【NOI 2004】 郁闷的出纳员
Description OIER公司是一家大型专业化软件公司,有着数以万计的员工。作为一名出纳员,我的任务之一便是统计每位员工的工资。这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资。如果他心情好,就可能把每位员工的工资加上一个相同的量。反之,如果心情不好,就可能把他们的工资扣除一个相同的量。我真不知道除了调工资他还做什么其它事情。 工资的频繁调整原创 2013-11-23 10:46:00 · 843 阅读 · 0 评论 -
【HZOI】 排队
Description一个队伍中站在最前面的人是最矮的,并且站在最后面的人是最高的,那么这个队伍是和谐的。 现在 N个人站成一队,第i个人身高为 ℎi,对于队伍中的一个区间[L,R],如果第 L 个人的高度小于[L+1,R]所有人的高度,并 且第R个人的高度大于[L,R−1]所有人的高度,那么[L,R]称 为一个和谐区间。 现在给出队伍的情况,求最长的和谐区间的长度。Input原创 2013-10-04 15:56:13 · 1130 阅读 · 0 评论 -
【CEOI 2003】 赛车
Description有n辆赛车,从各不相同的位置出发,以各种速度开始往右行驶,不断有超车现象发生,如下图所示。 給定n辆赛车的出发位置Xi与速度Vi,请输出超车事件的总数,以及依序列出最早发生的超车事件。 若有两个超车事件同時发生,请先输出超车位置数值较小的。 为了怕危险,测试数据里面不会有两个超车事件同时同地发生。Input第一行有一个正原创 2013-11-02 09:19:54 · 1643 阅读 · 0 评论 -
图腾计数
树状数组巧妙应用原创 2013-10-13 12:33:20 · 1472 阅读 · 0 评论 -
集合的第N大元素
Description有一个集合满足下面的关系: 1)1属于该集合; 2)如果x属于该集合,则2x+1和3x+1也属于该集合; 3)集合中再无其它的元素。 请你求出集合的前n小的元素。 Input 一个整数N(NOutput一行,N个不同的整数,由小到大排列,用空格间隔Sample Input5原创 2013-10-01 17:40:02 · 1542 阅读 · 0 评论 -
分组排序
贪心与线段树的巧妙结合原创 2013-10-11 13:17:37 · 948 阅读 · 0 评论 -
魔法树
堆式线段树,常数较朴素小原创 2013-10-12 20:46:22 · 1090 阅读 · 0 评论 -
滑动窗口
Description给你一个长度为N(N窗口位置 最小值 最大值 [1 3 -1] -3 5 3 6 7 -1 3 1 [3 -1 -3] 5 3 6 7 -3 3 1 3 [-1 -3 5] 3 6 7 -3 5 1 3 -1原创 2013-09-28 09:30:41 · 1351 阅读 · 0 评论 -
派遣 APIO-2012
传送门:http://oi.nks.edu.cn/showproblem?problem_id=2259Description在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。 在这个帮派里,有一名忍者被称之为 Master。除了 Master 以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直原创 2013-11-04 12:50:35 · 1009 阅读 · 0 评论 -
非负的部分和
Description小沐同学最近收到了一个任务:给出一个包含n 个整数的序列:A0,A1,…,An-1,循环移动k 位之后,这个序列就变成了Ak,Ak+1,…,An-1,A0,A1,…,Ak-1。一种优秀的移动是:对于任意的前i(1但小沐同学还小,无法解决这个问题,请你帮助他!Input第一行一个整数n,表示有n 个数。 第二行 n 个整数,Ai 表示给出的第i 个数。O原创 2013-10-19 17:56:42 · 861 阅读 · 0 评论 -
校门外的树
Description校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,读入l,r表示在l~r之间种上的一种树 K=2,读入l,r表示询问l~r之间能见到多少种树 (0Input第一行n,m表示道路总长为n,共有m个操作 接下来m行为m个操原创 2013-10-13 14:02:04 · 1612 阅读 · 0 评论 -
广告印刷
Description 最近,afy决定给TOJ印刷广告,广告牌是刷在城市的建筑物上的,城市里有紧靠着的N(NInput 第一行,一个整数N 第二行,N个空格间隔的整数,表示从左往右每栋楼的高度Output一个整数,表示最大面积Sample Input65 8 4 4 8 4Sample Output24原创 2013-10-01 17:22:48 · 1709 阅读 · 0 评论 -
hl吃披萨
Description hl来到一家自助比萨店,该店共有N种不同尺寸的比萨饼(编号1到N)供顾客享用,喜欢吃比萨饼的hl激动万分。 高兴之余,hl发现该店有一些坑爹的规定: 1.每位顾客最多只能吃K块比萨饼,并且这K块饼的尺寸必须都不相同; 2.如果顾客吃完一块尺寸为S的比萨饼,那么接下来他只能选尺寸小于S的饼吃; 3.每种比萨饼都有一个价格,顾客所吃的比萨饼原创 2013-09-29 19:00:56 · 1459 阅读 · 0 评论 -
第k小数
Description 现在已有N个整数,你有以下三种操作: A 表示加入一个值为A的整数 B 表示删除其中值为B的整数 K 表示输出这些整数中第K小的数Input第一行,两个整数N,M,表示最开始有N个整数,总共有M个操作 第二行用空格隔开的N个整数 接下来M行,每行表示一个操作Output若干行,一行一个整数,表示所求的第K小的数字Sample I原创 2013-09-28 16:07:23 · 933 阅读 · 0 评论 -
【USACO 2013 January Gold】奶牛排队
Description农夫约翰的N(1 约翰觉得如果连续排列的一段奶牛有相同的血统编号的话,奶牛们看起来会更具有威猛。为了创造这样的连续段,约翰最多能选出k种血统的奶牛,并把他们全部从队列中赶走。请帮助约翰计算这样做能得到的由相同血统编号的牛构成的连续段的长度最大是多少?Input第一行,两个空格间隔的整数N和K 接下来N行, 每行一个整数,表示对应奶牛的血统编号Outpu原创 2013-12-18 14:46:01 · 2932 阅读 · 0 评论 -
【USACO 2013 January Gold】座位 --线段树
一类线段树的典型代表原创 2013-12-20 14:19:19 · 1560 阅读 · 0 评论 -
小白逛公园 --线段树
Description小新经常陪小白去公园玩,也就是所谓的遛狗啦…在小新家附近有一条“公园路”,路的一边从南到北依次排着n个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了。 一开始,小白就根据公园的风景给每个公园打了分-.-。小新为了省事,每次遛狗的时候都会事先规定一个范围,小白只可以选择第a个和第b个公园之间(包括a、b两个公园)选择连续的一些公园玩。小白当然希望选出的公园的分数总原创 2013-12-21 10:22:24 · 2073 阅读 · 0 评论 -
【USACO 2009 JAN GOLD】安全路径
DescriptionGremlins最近在农场上泛滥,它们经常会阻止牛们从农庄(牛棚_1)走到别的牛棚(牛_i的目的地是牛棚_i)。每一个gremlin只认识牛_i并且知道牛_i一般走到牛棚_i的最短路经。所以它们在牛_i到牛棚_i之前的最后一条牛路上等牛_i,当然,牛不愿意遇到Gremlins,所以准备找一条稍微不同的路经从牛棚_1走到牛棚_i,所以,请你为每一头牛_i找出避免gremli原创 2013-12-07 11:53:48 · 1323 阅读 · 0 评论 -
【NOI2003】 editor
【题目大意】要求一种数据结构,能够支持(1)在某个位置插入长度为n的字符串(2)删除从某个位置开始的长度为n的字符串(3)输出从某个位置开始的长度为n的字符串【分析】块状链表很裸的一道题,练练手。要注意几点细节:(1)空间可以循环使用(2)注意随时保证复杂度,即合并小区间【代码】#include #include #include原创 2014-03-04 16:18:17 · 1559 阅读 · 0 评论