随笔分类 - ---数据结构---
摘要:题目链接:Educational Codeforces Round 22 E. Army Creation 题意: 给你n个数和一个数k,然后有q个询问. 每个询问 有一个区间[l,r],问你这个区间内在满足每一种数不超过k的情况下,最大能选多少个数出来。 强制在线。 题解: 一看就要用到主席树,和
阅读全文
摘要:题目链接:Educational Codeforces Round 24 D. Multicolored Cars 题意: 给你n个数,和Alice选的数A,让你在这n个数中找一个数x, 使得对于第i个数,cnt[A]<=cnt[x], 题解: set乱搞一下,每次将比cnt[A]小的数删掉就行了。
阅读全文
摘要:题目链接:Educational Codeforces Round 23 F. MEX Queries 题意: 一共有n个操作。 1. 将[l,r]区间的数标记为1。 2. 将[l,r]区间的数标记为0。 3. 将[l,r]区间取反。 对每个操作,输出标记为0的最小正整数。 题解: hash后,用线
阅读全文
摘要:题目链接: Educational Codeforces Round 23 E. Choosing The Commander 题意: 一共有n个操作。 1. 插入一个数p 2. 删除一个数p 3. 询问有多少个数 使得 x^p<l 题解: 对于前两种操作用01trie就能解决。 对于对三个操作,我
阅读全文
摘要:题目链接:Educational Codeforces Round 23 D. Imbalanced Array 题意: 给你n个数,定义一个区间的不平衡因子为该区间最大值-最小值。 然后问你这n个数所有的区间的不平衡因子和 题解: 对每一个数算贡献,a[i]的贡献为 当a[i]为最大值时的 a[i
阅读全文
摘要:题目链接:hdu 5306 Gorgeous Sequence 题意: 给你一个序列,有三种操作。 0 x y t:将[x,y]的数取min(a[i],t) 1 x y:求[x,y]的最大值 2 x y:求[x,y]的区间和 题解: 吉老师的课件题:传送门 1 #include<bits/stdc+
阅读全文
摘要:题目链接: Codeforces Round #406 (Div. 2) D. Legacy 题意: n个点,m条边,起始点为s。一共有三种建边方式。 1:建立一条a->b权值为c的单向边、 2:建立一条v->[l,r]权值为d的单项边。 3:建立一条[l,r]->v权值为d的单项边。 求起点到各个
阅读全文
摘要:题目链接:Codeforces Round #406 (Div. 2) E. Till I Collapse 题意: 给你n个数,对于每一个k(1<=k<=n),划分区间,每个区间只能有k个不同的数字, 问最小的划分区间的个数。 题解: 用主席树倒着将数插入,对于每个区间询问第k个不同数的位置就行了
阅读全文
摘要:题目链接:hdu 6031 Innumerable Ancestors 题意: 给你一棵n个节点的树,现在有m个询问,每次给你两个点集a,b。 让你从a,b点集中选两个点x,y,使得这两个点的LCA的深度最大。 题解: 标解应该是二分+LCA,不过我试了一下暴力,稍微剪了点枝,就直接过去了。 具体看
阅读全文
摘要:题目链接:hdu 4578 Transformation 题意: 有n个数一开始全为0,现在有m个操作. 1 a b c :将[a,b]区间的数全部加c 2 a b c :将[a,b]区间的数全部乘c 3 a b c :将[a,b]区间的数全部set成c 4 a b p :询问[a,b]区间的数的p
阅读全文
摘要:题目链接:codeforces 85D. Sum of Medians 题意: add x 表示向集合中添加x(添加x的时候保证x是第一次被添加入集合)del x 表示从集合中删除x (删除x的时候保证x存在于集合中)sum 将集合排序后,询问集合里面所有下标i % 5 = 3的元素的和(如果集合为
阅读全文
摘要:题目链接:Codeforces Round #401 (Div. 2) E. Hanoi Factory 题意: 给你n个环,每个环有内径a,外径b,高度v,现在让你将这n个环重起来,问你能重的最大高度。 满足条件:bi>=bj,bj>ai。(i<j) 题解: 首先将所以数据离散化,然后我们先按b从
阅读全文
摘要:题目链接:hdu 1880 魔咒词典 题意: 给你一个10w的词典,让你输出对应的字段。 题解: map暴力存字符串肯定会卡内存,这里用BKDR字符串hash一下,用map映射一下。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i
阅读全文
摘要:题目链接:hdu 4125 Moles 题意: 给你n个数,让你按键值建一个平衡二叉树,然后奇数为0,偶数为1,然后可以遍历这颗树得到一个欧拉序列,现在给你一个串,问你出现了几次。 题解: 建树的时候要引用一个结论:就是新插入的数的父亲,要么是比它大的最小的那个元素,要么是比它小的最大的那个元素。
阅读全文
摘要:题目链接:hdu 4735 Little Wish~ lyrical step~ 题意: 有n个节点的树,每个节点可能是男孩,可能是女孩,节点之间有距离,现在要让所有的女孩周围距离D之内有男孩,问最小需要交换多少次男孩和女孩的位置。 题解: 把每个节点对小于D距离的全部link起来,然后DLX爆艹,
阅读全文
摘要:题目链接:hdu 2295 Radar 题意: 给你n个城市,m个雷达,现在最多用K个雷达,求最小半径覆盖全部的城市。 题解: 二分半径套一个DLX就行。网上随便找的一个板子 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;
阅读全文
摘要:题目链接:hdu 4453 Looploop 题意:具体看看图,都是splay的基本操作,当然不用splay也可以,这题有特殊性。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace
阅读全文
摘要:题目链接:hdu 4441 Queue Sequence 这题看了题解写的,题解传送门 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 #define ls l,m,rt<<1 4 #define rs m+1
阅读全文
摘要:题目链接:hdu 3487 Play with Chain 题意: cut a b c: 将a到b区间剪切下来,放在第c位置的后面。 flip a b: 翻转a到b区间 题解: 第一个操作,选通过旋转,然后使a到b区间变成根的右儿子的左儿子,然后剪掉。 再找到c+1的位置,接上。 第二个操作,区间标
阅读全文
摘要:题目链接:hdu 3436 Queue-jumpers 题意: TOP是将某个人移至队首 QUERY是某个人的位置 RANK就是找出第K位是多少 题解;splay来维护。 先离散化,然后记录每个区间的信息,然后用splay维护一下。 top:先删除再插到队首。 query:找到树中对应的节点,然后旋
阅读全文

浙公网安备 33010602011771号