
Data Structures
文章平均质量分 72
haha593572013
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #169 (Div. 2)(完全)
B题题目看错导致晕了老半天D题:从左往右 找到 l 和 r的二进制表示中的第一对 0 1, http://codeforces.com/contest/276/submission/3190755 。。。011111。。。100000。。。111111省略号表示的数位都相同,容易看出不会有其他答案比这个值更大,如果有,则前面还有上面1 与 下面 0配对,那么l肯定大于r了。原创 2013-02-25 11:59:14 · 899 阅读 · 0 评论 -
Codeforces Round #174 (Div. 1)(完全)
比赛地址A:直接贴了个模板,我有罪。。。。B:dp[i][2],表示从i出发的结果(要么走到挂,要么循环),记忆化搜索就好了,每次要注意判环C:问你有多少种组合满足Q个条件,每个条件的形式是硬币a出现的次数 大于 硬币b出现的次数 ,先类似于传递闭包搞一下,判掉自己大于自己的情况,然后再用背包来做,每次放进来一个硬币就相当于把出现次数比这个硬币多的硬币都放进来了,由此知道了物品的体积原创 2013-03-18 03:20:36 · 1430 阅读 · 0 评论 -
zoj 3299 线段树 离散化
4 41 61 33 62 41 2 01 3 12 4 21 6 300012我喜欢左闭右闭的线段树。。。。本质是水题,无奈我比这个题还水,被这个题坑了一晚上,最后发现是个SB的错误。。。。有一些砖块从很高的地方往下掉。在一些特定高度的地方有一些木板,如果砖块掉到了木板上,就会停住,而那些没有掉上来的就会继续往下掉。。。最后输出原创 2013-03-29 11:45:50 · 1177 阅读 · 0 评论 -
codeforces 151(完全)
最近变懒了,好久没写题解了。。这场codeforces 是在实验室做的,当晚实验室竟然有8个人同时做codeforces,创下了我们学校集训队熬夜做codeforces的记录,12级的一两个同学上升势头很猛,赞一个。说一下题目吧:A:水题B :水题C : 比水题稍难D: 阅读理解题吧,读懂了就秒掉了E题:写了一个比较挫的英文problem E: we can a原创 2012-11-23 22:00:38 · 1260 阅读 · 0 评论 -
Codeforces Round #165 (Div. 1)
A:求出对于每堆箱子满足条件的最大的那个就好了,因为对于两个“大箱子” A B,里面各自都嵌套了很多相同的小箱子,体积小的那一个必然可以放进体积大的那一个(2^k),体积相等时也可以合并为1个,因为题目保证每种箱子都是不一样大小,所以A 或 B中的箱子的体积肯定是不同的,所以可以将A中的所有箱子放入B中,(假设A中箱子的体积较小),所以可以通过不断的合并合并成最大的那个。B:尽可能通过少的移动原创 2013-02-02 13:07:15 · 1140 阅读 · 0 评论 -
codeforces 162 div 1(完全)
A. Escape from StonesB. Good Sequences C. Choosing BallsD. Colorful Stones:s串的每个字符对应T串中一个匹配的区间,但是要注意XXXc1c2 xxxxc2c1这种状态不可达到 , 所以要剪掉,参考rnq_58的代码E. Roadside Trees官方题解(很详细了)线段树优化DP原创 2013-01-27 12:03:32 · 1413 阅读 · 0 评论 -
codeforces 70D 动态凸包
http://www.codeforces.com/problemset/problem/70/D两种操作1:增加一个点,会形成一个新的凸包2:判断某个点是否在凸包内有两种方法可以做,不过都类似的,都是根据求凸包的方法来做的。比如,用水平序求凸包的时候,会有两条凸线,一条上凸折线,一条下凸折线,那么判断一个点在这个凸包内就是判断这个点是否在上凸折线的下方以及是否在下凸折原创 2013-01-14 03:17:56 · 3231 阅读 · 0 评论 -
sgu 277 动态凸包
做法和上一篇的那个题一样,每次删掉一个点把相应的面积加上即可,不过细节问题折腾了我一个下午,所幸AC了,不过代码已使我目不忍视了。删点的时候需要考虑左右交界处要加上的是一个三角形还是两个三角形 ,各种细节改天附图说明,今天已经废了贴上代码,有少量debug用的数据/* 0 0 -1 0 0 -1 2 0 -2 1 0 4 1 0 0 3 3 2 5 1 2 2原创 2013-01-14 21:34:52 · 1387 阅读 · 0 评论 -
AC自动机+数据结构 阿狸的打字机
题目链接题意:中文题我就不多说什么了以前也做过几个AC自动机+数据结构优化的题目,都是建好fail树然后就跟ac自动机无关了,所以这种题目都必须深刻理解AC自动机的原理以及fail树是怎么回事。第一步:先读入字符串,建好AC自动机,我在这里被坑了,,,根据题目的特殊性,可以O(n)插入到字典树里面第二步:建成fail树,预处理dfs序。第三步: 离线回答询问。原创 2013-01-28 00:04:28 · 1462 阅读 · 0 评论 -
Arab Collegiate Programming Contest 2012 解题报告(约等于AK)
比赛地址大神都是各种ak,小菜只能赛后默默补题。。。。。。。H题看不懂啊,,,,,,路过的帮忙一下100多个人A的题就不说了。。。。B题: 可以用平衡树来做,因为最多就200000个字符,所以每次可以暴力插入splay树,输出的时候也一样暴力:#include#include#define L ch[x][0]#define R ch[x][1]#def原创 2013-01-25 22:27:46 · 1914 阅读 · 3 评论 -
codeforces 217E 逆向思维
链接:http://codeforces.com/problemset/problem/217/E题意:给你一个字符串,长度小于等于300W,再给你两个数,n,k接下来是n个操作,每个操作是对一段区间操作,将整段区间取出来,偶数位的字符放前面,奇数位的字符放在后面,然后插入这个区间的后面比如 1 11 s1s2... s11, 将 s2s4s6s8s10s1s3s5s7s9s11原创 2012-09-19 23:12:10 · 1481 阅读 · 0 评论 -
树套树练手题
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26976纯属无聊,练手用的,线段树套平衡树常数太大超时了,改成树状数组套平衡树就AC了。。。。其实感觉如果是100000次操作,坐标的范围都是100000,那二维线段树或者二维树状数组就搞不定了吧,空间开不下,只能离散化掉一维,然后将另一维插入平衡树。套了平衡树之后原创 2013-05-08 16:43:54 · 1682 阅读 · 0 评论 -
SGU 271 水题。。。。
手贱,输出的时候没pushdown。。。。。就是简单的区间翻转。。期末来了,总是淡淡的忧伤,没办法,只能找水题做了#include #include #include #include #include #include #include using namespace std;typedef long long lld;#define L x->c[0]#defi原创 2013-06-08 15:43:15 · 1519 阅读 · 0 评论 -
Codeforces Round #186 (Div. 2)
题目链接E题:大概能想到贪心,但细想不下去,最后问了别人,好像也没有什么严谨的证明。。。首先,尽可能凑出大的数字,m-1,m-2,,,,,,,话说是因为如果上下两个数字互为最优的匹配,那么必选这个匹配,因为如果不选这个会使得总答案变小然后每次就根据这个原则去选取就好了。。。看下那些AC的代码就知道了,这题主要是考想法,,,怎么证明。然后根据上面那个结论,可以用一个奇葩的用平衡树来做原创 2013-06-01 10:43:11 · 1411 阅读 · 0 评论 -
Codeforces Round #219 (Div. 1)(完全)
戳我看题目A:给你n个数,要求尽可能多的找出匹配,如果两个数匹配,则ai*2 排序,从中间切断,分成相等的两半后,对于较大的那一半,从大到小遍历,对于每个数在左边那组找到最大的满足条件的数配对用一个变量移动一下就好了。这样的配对数量肯定就是最多的。因为1:如果左边那一半数量取少一点,比如取a1 a2 a3...ak (k 那实际上ak+1 ak+2 .. a n/2 这些数原创 2013-12-18 20:05:01 · 1444 阅读 · 0 评论 -
Codeforces Round #199 (Div. 2)
C: 可以避免用浮点D:推荐逐格递推法,想学的话去http://blog.youkuaiyun.com/crazy_ac/article/details/9819191E:Qtree 5的弱化版,顺便问一句。。。CF真是没题出了么??这个题由于是弱化版,没有向qtree 5那样对某个点的颜色取反,所以有一种简易的lct写法,我是跟小水大神学的。。学会了lct,我的splay写法也可以改观很多了原创 2013-09-10 18:28:00 · 1668 阅读 · 0 评论 -
hdu 4680 About set 小记(毕竟是一天的时光啊)
Problem DescriptionToday Zhanyl (sister Zhan as you know) receives a task about set operation. Although she is very good at this task, but you know she is very lazy so that she wants you to help原创 2013-08-17 00:56:30 · 2335 阅读 · 6 评论 -
hdu 1007 最近点对问题(Splay解法)
为什么要写这个题、、经典啊,当然,别以为我用分治做的,不过主要思想还是那神奇的六个点共存(一个h*2h的矩形中最多能放下多少个点使得两两距离不超过h)其实我是在这里看到的http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lineSweep排个序,然后扫描过去,每次确定Y的范围,暴力找每个点(其实这是O(1)原创 2013-08-24 18:46:00 · 1277 阅读 · 0 评论 -
ABBYY Cup 3.0 - Finals(总结)
题目链接D题真的有点难写,,,不过写完后发现,也还行(我冒着可能万劫不复的心态研究了下tourist的代码),尽管如此,写的时候还是感觉各种不顺,还好1A了,不过肯定得重写,。这种题非常锻炼代码能力。这场比赛如果参加的话能暴涨啊。虚拟比赛的时候很快就做完了A B C ,然后D题不会做,暴力懒得写,写了的话估计还能涨点。A题:题意:给你一个序列,让你挑出一个子序列,子序列的两端必原创 2013-08-22 21:58:07 · 1918 阅读 · 2 评论 -
2012-2013 ACM-ICPC, NEERC, Southern Subregional Contest 解题报告
题目链接就推荐几个有营养的题好了H - Sultan's Pearls由于最终状态悬挂在桌面以下的长度始终是不变的,因此可以枚举最终哪个端点悬挂在最下面,然后二分找到能去掉的最多的开头的部分K - Tree Queries Online(SGU 550)给你一棵树,每条边都有一个标号,然后给你一个删边的顺序,每删除一条边,就要输出这条边的边权,然后数一下当前块两边各有多少个点,原创 2013-07-21 10:28:41 · 2657 阅读 · 0 评论 -
BZOJ 1861 伸展树基本操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1861写好关键的三个函数后就是水水的模拟题,旋转来旋转去的操作,so easy有几点值得注意:1:取出Splay中某个节点,然后在插回去,这个节点的左右儿子要记得清空2:每次更改关系后别忘了up上去没了。。#include #include #include #inclu原创 2013-06-03 10:40:04 · 1512 阅读 · 4 评论 -
codeforces 173E 数据结构 好题
链接:http://www.codeforces.com/problemset/problem/173/E想的久写的久,都累死了。。。。。题意 : 自己看吧。。这道题的话 , 首先观察到一个突破口:对于每个询问 的 leader 的年龄都有一个区间范围。而且leader的领导能力必须大于等于询问的这两个人的较大值 ,设为lim。那么我们再想,怎么将两个人加进来后再去加入其他的人,很原创 2013-01-10 23:54:56 · 1239 阅读 · 0 评论 -
Codeforces Round #163 (Div. 2)(完全)
这场比赛大概是我做CF以来最难的一场div2了D题搞了很久,还是没搞出来,C题题目没看仔细,E题做过类似的,但显然我这种div2选手很少在比赛搞E题,不过现在已经渐渐消除了对后面两题的恐惧、C.Below the Diagonal给你一个0 1 方阵,题目说有n-1个1,然后一次操作可以交换两行或者两列,然后要求输出一种交换的方案使得所有的1都在主对角线以下。可以暴力两原创 2013-01-24 15:43:10 · 3240 阅读 · 2 评论 -
无比强大的数据结构 伸展树总结
链接 :http://www.notonlysuccess.com/index.php/splay-tree/论文链接:http://www.docin.com/p-62465596.html其实本来不想学splay树的,因为好像平时做题不怎么用到,但是,请注意,书到用时方恨少啊,多一点储备,就多一分机会论文里说,动态树也要用splay来维护的说,有的斜率优化的题也要用spla原创 2012-09-30 17:09:34 · 3999 阅读 · 0 评论 -
伸展树最重口味题 维修数列
链接 : http://www.lydsy.com/JudgeOnline/problem.php?id=1500如果都做到这题了,就不多说了有很多的注意点,代码中有注释#include#include#includeusing namespace std;const int inf = ~0u>>2;#define L ch[x][0]#define R ch[x][1]原创 2012-09-30 17:04:34 · 1900 阅读 · 0 评论 -
poj 3580 伸展树重口味题
http://poj.org/problem?id=3580注意,inf设的不要太小,还有对于题目输入数据的各种处理(可能有非法数据),要注意判断,具体见代码#include#include#includeusing namespace std;const int inf = ~0u>>2;#define L ch[x][0]#define R ch[x][1] #d原创 2012-09-30 16:58:54 · 1785 阅读 · 0 评论 -
bzoj 1588 营业额统计 splay
http://www.lydsy.com/JudgeOnline/problem.php?id=1588#include#includeconst int mod =1000000;const int inf = ~0u>>2;#define KT (ch[ ch[rt][1] ][0])const int maxn = 200010;int ans;struct原创 2012-09-30 16:42:52 · 1610 阅读 · 2 评论 -
bzoj 1208 宠物收养所 splay
链接 : http://www.lydsy.com/JudgeOnline/problem.php?id=1208找前驱 后继 删除一个节点直接将要删除的节点旋转到根,然后删除根节点即可/************************************************************** Problem: 1208 User: wuyiqi原创 2012-09-30 16:40:04 · 1387 阅读 · 0 评论 -
bzoj 1503 [NOI2004]郁闷的出纳员 splay
http://www.lydsy.com/JudgeOnline/problem.php?id=1503都是些基本的平衡树操作,各种平衡树都可以,我用的splay//插入,删除(一棵子树),找第k大#includeconst int inf = ~0u>>2;#define KT (ch[ ch[rt][1] ][0])const int maxn = 200010;int l原创 2012-09-30 16:34:32 · 2030 阅读 · 3 评论 -
hdu 1890 splay区间翻转
链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1890下传翻转标记的时候要特别注意每次将第i个数到第i大的数之间的数翻转,然后删除第i大的数/*区间翻转,注意标记的下传*/#include#include#includeusing namespace std;#define L ch[x][0]#define R ch[x原创 2012-09-30 16:29:45 · 2311 阅读 · 0 评论 -
splay 的普通平衡树功能
普通平衡树的功能主要有 插入 删除 一个数 找 前驱 后继 第k大 小求大于等于或小于等于某个数的个数(可以求逆序数)确定一个数的排名我把所有的功能整合在了一起了,代码如下#include#includeconst int inf = ~0u>>2;#define L ch[x][0]#define R ch[x][1]#define KT (ch[原创 2012-09-30 16:19:48 · 2708 阅读 · 0 评论 -
poj 3237 加强版 query on a tree 树链剖分
链接:http://www.spoj.pl/problems/QTREE/http://poj.org/problem?id=3237题意:一棵树,两种更新操作,改变一条边的边权,将a ->b路径上的所有边权取反,询问一条路径上的最大边权都是典型的树链剖分,下面一题是上面的加强版,还要在树上进行成段更新,其实也不难。只是区间还要再记录一个最小值,因为取反操作的话会使原创 2012-08-21 23:35:26 · 1823 阅读 · 0 评论 -
poj 3162 线段树 hdu 4123 bfs + RMQ预处理
http://acm.hdu.edu.cn/showproblem.php?pid=4123题意:给你一棵树,然后标号为1~n,每条边都有一定的边权,那么从每个点出发都有一个最远距离num[i];先求出num【】数组,然后再有500个询问,每个询问输入一个整数m,求num数组中最大值与最小值绝对值之差不超过m的最长的连续区间是多少。这是2011福州区域赛的题目,咋一看蛮难的,其原创 2012-08-16 11:43:04 · 1195 阅读 · 0 评论 -
hdu 4366 树形结构 线段树
http://acm.hdu.edu.cn/showproblem.php?pid=4366题意:给你一棵树,每个结点有两个属性值,1:能力值 2:忠诚度然后m个询问,每次询问一个整数u,求u的子树中能力值大于u的且忠诚度最大的点的编号做法:这种题还是老套路,将树形结构转换成线性结构,用数据结构来解决查询最值得问题。但这个题目有一个亮点就是限制了一个变量,要求另一个原创 2012-08-14 20:16:25 · 2041 阅读 · 4 评论 -
poj 2104 hdu 2665 区间第k大 可持久化线段树
好像又可以叫函数式线段树,反正主要思想就是充分利用历史信息,共用空间,具体的看论文吧这里讲的比较详细 http://hi.baidu.com/wyl8899/item/e00796a9cb2df73d020a4d68这题A的太爽了* _ *看CLJ标称的时候用的是动态申请内存的线段树,非常不习惯- -昨天听说可以静态实现,而且很简单,于是重新想了下实现的思路,果断开敲,敲之原创 2012-09-30 01:12:06 · 5583 阅读 · 3 评论 -
hdu 3436 splay模拟题
http://acm.hdu.edu.cn/showproblem.php?pid=3436离线操作,将两个数之间那段数的个数也当做一个节点放在伸展树中,找的时候根据节点的个数往左或往右找就好了/*关键是离散化的技巧其他没什么*/#include#include#include#includeusing namespace std;const int inf = ~原创 2012-09-30 16:49:08 · 1594 阅读 · 0 评论 -
hdu 4358 树形结构 转线性结构
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4358给你一棵树,每个节点有一个点权,然后有一些询问,求以某个点为根的子树中有多少的数出现了k次首先还是老方法,先转换成线性序列,每个节点对应一个区间,然后离线操作,每个询问都对应这一段区间,相当于询问一段区间内出现k次的数的个数,将所有询问的区间按照右端点排序,然后用线段树来做,线段树的第原创 2012-10-01 21:43:01 · 1790 阅读 · 0 评论 -
Codeforces Round #159 (Div. 2)
水!A: 题目看不懂,直接看sample看懂的B:直接输出就可以了 - -C:相当于给n条射线,极角排序,然后找角度最大的相邻的两条,360 减去这个角度就是答案D:最后一项减最后第二项肯定小于等于最后第二项,再用这个差值与最后第三项做差(大的减去小的),结果肯定也是小于等于最后第三项的,然后依次递推,相当于不断的加上括号,最后从左往右去括号即可证明:假设最后三项为 a a原创 2013-01-09 03:22:19 · 1495 阅读 · 2 评论 -
codeforces round 156 div1
div1 :A : 找最长的子序列,只包含两种数且每两个相邻的数都不相同,dp[i][j]代表以第i个数结尾上一个数是第j个数的最长的序列http://codeforces.com/contest/255/submission/2787851B: 问你一个点经过几次扩散式的染色才能够染不小于C个方格,很明显的二分答案判可行,不过在判断可行的时候还真是有点小纠结,想仔细了就okhtt原创 2012-12-19 01:51:21 · 1325 阅读 · 0 评论 -
Codeforces Round #158 (Div. 2) (完全)
第一百零一篇博文了哟~比赛的时候直接看D和E了,结果都没做出来,我这个大水货。A题 : 水题,满足整除其实就是余数为0B提 : 模拟题C题 : 逆着恢复原来的数列就好了(不断的减一),直到碰到0就停止,当然不能模拟D题 : 给你一棵黑白树的每个点的颜色,以及这个点周围所有边的权值和,让你还原这棵树。将白点和黑点排成两排,按照权值从小到大,每次都从端点建边,边的权值为原创 2012-12-29 15:24:49 · 1631 阅读 · 0 评论