随笔分类 - 数据结构
数据结构相关
摘要:题目链接:http://codeforces.com/contest/842/problem/D 题意:定义Mex为一个序列中最小的未出现的正整数,给定一个长度为n的序列,然后有m个询问,每个询问给定一个数x,先对序列每个数与x进行异或运算(^),之后输出当前序列修改完之后的Mex。 思路:因为对于
阅读全文
摘要:题目链接:http://codeforces.com/contest/834/problem/D 题意:给定一个长度为n的序列和一个k,现在让你把这个序列分成刚好k段,并且k段的贡献之和最大。对于每一段的贡献为该段有多少个不同的数字。 思路:考虑dp, dp[k][i]表示前i个数切k段的答案,那么
阅读全文
摘要:题目链接:http://codeforces.com/contest/832/problem/D 题意:给定一棵n个点的树,然后给你q个询问,每个询问为三元组(a,b,c),问你从这三个点中选取一个作为终点,一个作为Misha的起点,一个作为Grisha的起点。然后每天早上Misha从起点到终点所经
阅读全文
摘要:题目链接:http://codeforces.com/contest/821/problem/C 题意:起初有一个栈,给定2*n个命令,其中n个命令是往栈加入元素,另外n个命令是从栈中取出元素。你可以在任何操作之前重新排列目前栈内的元素,现在要求对于取出的元素序列为1~n。问你至少要重新排列栈内的元
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5634 题意:给定一个长度为n的序列,有m次操作。操作有3种: 1 l,r :区间[l,r]的值变成phi[val[i]](l<=i<=r; phi是欧拉值) 2 l,r,x:区间[l,r]的值变成x 3
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/343/D 题意:给定一棵n个n-1条边的树,起初所有节点权值为0,然后m个操作。 1 x:把x为根的子树的点的权值修改为1; 2 x:把x结点到根路径上的点修改为0; 3 x:查询结点x的值。 思路:树链剖
阅读全文
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 题意:中文题目 思路:树链剖分。首先考虑求区间颜色段数的问题, 我们可以用线段树维护:区间左右端点(st,ed),区间颜色段数(val),懒惰标记(lazy:是否整个区间被染成同一种颜
阅读全文
摘要:题目链接:http://poj.org/problem?id=3237 题意:给定一棵n个结点n-1条边的树。 每条边都是一个边权。 现在有4种操作 1:CHANGE I V:把(输入的)第i条边的边权改为V 2:NEGATE a b:把点a到点b的路径上的边权取反 3:QUERY a b:输出点a
阅读全文
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1036 题意:中文题目 思路:树链剖分入门题, 剖分后用线段树维护即可。
阅读全文
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4034 题意:中文题面 思路:树链剖分入门题。 剖分后就是一个简单的区间更新和区间求和问题。用线段树去维护一下。 由于有一个操作是关于子树的,可以用DFS序来求,但是由于剖分后的序列都是连续的
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4467 题意:给定n个点m条边的无向图,点被染色(黑0/白1),边带边权。然后q个询问。询问分为两种: Change u:把点u的颜色反转(黑变白,白变黑),Asksum a b(a,b的值为0/1):统
阅读全文
摘要:题目链接:http://vjudge.net/problem/174774/origin 题意:给定一个长度为n的序列a[],序列的值不大于m,现在有k个询问,每个询问给定(l,r).让你求出max{|x − y| : Li ≤ x, y ≤ Ri and Ax = Ay}。即区间[L,R]中值相同
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4858 题意:中文题面 思路:来自此博客 对每个点定义两个值:val,sum,val记录自己的特征值,sum记录周边所有点特征值的和。 现在我们把所有的节点分成两类,重点(度数>=sqrt(m)),轻点(
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/13/E 题意:给定n个弹簧和每个弹簧初始的弹力a[]。当球落在第i个位置。则球会被弹到i+a[i]的位置. 现在有2种操作: 1 a b:把第a个弹簧的弹力修改为b。 2 a:当球初始放入的位置为a时,需要
阅读全文
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 题意:中文题面 思路:考虑分块,每个位置维护一个跳出该块需要的步数cnt[],和跳出该块后到达下一块的哪个位置to[]。 关于修改操作:直接修改所在块的左端点到修改的位置。 然后需要逆
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/444/C 题意:给定一个长度为n的序列a[]。起初a[i]=i,然后还有一个色度的序列b[],起初b[i]=0。现在有2种操作: 1 l r x:区间染色,a[l],a[l+1]...a[r]变成x.同时b
阅读全文
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2957 题意:中文题面 思路: 来自此博客 首先明确问题,对于每栋楼房的斜率K=H/X,问题就是问有多少个楼房的K比前面所有楼房的K都要大。 这题树套树当然可以,但是挺麻烦的,本渣觉得最简单就
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/455/D 题意:给定一个长度为n的序列a[]。 m次操作。共有两种操作 1 l r:将序列的a[l].a[l+1]...a[r]变成a[r].a[l].a[l+1]...a[r-1];2 l r k:求序列
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/551/E 题意:给定一个长度为N的序列。 有2个操作 1 l r v:序列第l项到第r项加v(区间加), 2 v:求整个序列中值为v的数的位置的差值最大是多少。不存在输出-1. 思路:分块。 每块维护该块序
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/103/D 题意:给定一个长度为n的序列。然后q个询问。每个询问为(a,b),表示从序列第a项开始每b项的加和。 思路:2014集训队论文中的<<根号算法——不只是分块>>中提到这题。 传统的数据结构比较擅长
阅读全文

浙公网安备 33010602011771号