随笔分类 -  数据结构

Codeforces 877E 线段树维护子树
摘要:``` / codeforces 877E 线段树维护子树 Author: lcy Time: 2017 11 2 一棵树,每个节点上有灯,每次可以操作 一颗子树,使其上面亮的灯熄灭, 灭的灯变亮。此外有一个查询操作, 返回每个子树中亮着的灯的个数。 先序遍历一遍树,重新标号,然后用线段树 维护每颗 阅读全文
posted @ 2017-11-02 21:44 cylcy 阅读(666) 评论(0) 推荐(0)
HDU1811 并查集 拓扑排序
摘要:``` /* hdu1811 并查集 拓扑排序 Author:lcy Time:2017-10-19 给出一组大于小于等于关系,判断其是否合法、矛盾或信息不足 如果只有大小关系,很容易想到拓扑排序来处理。 现在多了等于关系,那么可以先用并查集将所有相等的数合并, 再用拓扑排序即可。 注意如果矛盾和信息不足同时出现,输出矛盾。在这里WA了好久。 */ #include #define ull un... 阅读全文
posted @ 2017-10-19 23:57 cylcy 阅读(91) 评论(0) 推荐(0)
Codeforces 869e 二维树状数组维护
摘要:``` /* codeforces 869e 二维树状数组维护 Author:lcy Time:2017-10-18 在一个平面上可以有两种操作,添加矩形围墙以及删除矩形围墙, 题目保证围墙之前不会相交。 同时会有多组询问,给出两个点,判断能否相互抵达 怎么把围墙表示出来? 给出左上角的点(x1,y1),右下角的点(x2,y2),我们只需要 在以(x1,y1),(x2+1,y2+1)为对角的矩形... 阅读全文
posted @ 2017-10-18 15:35 cylcy 阅读(134) 评论(0) 推荐(0)
HDU5536 Trie树求异或最大
摘要:``` /* hdu5536 Trie树求异或最大 Author:lcy Time:2017-10-18 给出n个数,求max{(si+sj)^sk},其中i,j,k不相等 把n个树的二进制加入Trie树(先加入高位,满足贪心性质),然后枚举si+sj, 在Trie树中尽量寻找每一位都与si+sj不同的值 注意,如果把si+sj加入Trie树,再去枚举sk,会超时。 */ #include #... 阅读全文
posted @ 2017-10-18 10:41 cylcy 阅读(125) 评论(0) 推荐(0)
POJ3481 splay
摘要:``` /* poj3481 splay Author:lcy Time:2017-10-11 裸题 */ #include #include #include #include #include #include using namespace std; #define ll long long #define fr(i,a,b) for(int i=a;i=b;i--) #defi... 阅读全文
posted @ 2017-10-11 20:31 cylcy 阅读(168) 评论(0) 推荐(0)
BZOJ1588 splay
摘要:``` / bzoj1588 splay Author:lcy Time:2017 10 11 264ms...好慢 splay裸题,每次把新值加入树中时,获取他的排名,然后 找到排前一位和后一位的值分别和他做差,取最小值后加到答案上 每个节点用一个cnt记录相同元素的个数。 / include u 阅读全文
posted @ 2017-10-11 19:22 cylcy 阅读(197) 评论(0) 推荐(0)