随笔分类 - 树论——线段树
摘要:闲谈: 最后一个星期还是不浪了,做一下模拟赛(还是有点小虚) #30.candy 题目: 有一个人想买糖吃,有两家商店A,B,A商店中第i个糖果的愉悦度为Ai,B商店中第i个糖果的愉悦度为Bi 给出n,W,表示每个商店都有n个糖果且两个商店的每个糖果的价格都是W 求出最大的min(Sa,Sb)-D*
阅读全文
摘要:【传送门:51nod-1611】 简要题意: 给出n个点,编号为1到n,一开始每个点都是不可用状态,要花费c[i]的代价才能使第i个点变为可用点 有m个奖励区间,每个区间输入l,r,d,表示如果l到r的点都为可用状态则获得d的价值 求出最大能获得的价值 题解: 先DP一手,设f[i]为到第i个点能得
阅读全文
摘要:【传送门:BZOJ1135】 简要题意: 给出1到n号的鞋子,每对鞋子有k对 已知x号脚的人可以穿x到x+d号的鞋子 给出m个操作,每个操作输入r,x,说明来了x个r号脚的人(如果x为负数,则说明走了x个) 判断k对鞋子是否能够满足任何时刻所有人都有鞋穿 题解: 二分图匹配显然会超时 这时。。就应该
阅读全文
摘要:【传送门:BZOJ2957】 简要题意: 给出一个平面直角坐标系,有一个人站在(0,0)处,x轴的取值范围为1<=x<=n 有m个操作,每个操作输入x,y,表示在(x,0)处建一座楼,高y,如果(x,0)处本来没有楼则看作新建,否则看作改造 对于一座楼房,它能被看到当且仅当它的最高点与(0,0)的连
阅读全文
摘要:【传送门:BZOJ3212】 简要题意: 给出n个点,每个点有点权,Q个询问,两种询问: Q x y求出第x个点到第y个点的点权和 C x y c将第x个点到第y个点的点权都增加c 题解: 裸线段树 注意加long long 参考代码:
阅读全文
摘要:【传送门:BZOJ4491】 简要题意: 给出一个长度为n的序列,m个操作,每个操作输入x,y,求出第x个数到第y个数的最长子串,保证这个最长子串是不上升或不下降子串 题解: 线段树 因为不上升或不下降嘛,就差分一下呗 每一段区间维护: d表示最多连续的非正数的个数,u表示最多连续的非负数的个数 l
阅读全文
摘要:【传送门:BZOJ1858】 简要题意: 给出一个长度为n的01序列,有五种操作,m个操作: 0 x y将第x个数到第y个数都变成0 1 x y将第x个数到第y个数都变成1 2 x y将第x个数到第y个数的所有数取反(即0变为1,1变为0) 3 x y求出第x个数到第y个数有多少个1 4 x y求出
阅读全文
摘要:【传送门:BZOJ5039】 简要题意: 给出一个长度为n个序列,有m个操作,共为三种操作: 1 x y c表示将x到y的值全部*c 2 x y c表示将x到y的值全部+c 3 x y求x到y的值的和 题解: 同BZOJ1798 参考代码:
阅读全文
摘要:【传送门:BZOJ1798】 简要题意: 给出一个长度为n个序列,有m个操作,共为三种操作: 1 x y c表示将x到y的值全部*c 2 x y c表示将x到y的值全部+c 3 x y求x到y的值的和 题解: 线段树嘛,区间修改加区间求值 但是关键是怎么处理乘和加的lazy标记的处理 首先肯定不能够
阅读全文
摘要:【传送门:BZOJ3747】 简要题意: 共有m部电影,编号为1到m,第i部电影的好看值为w[i]。 在n天之中(从1到n编号)每天会放映一部电影,第i天放映的是第f[i]部 你可以选择l,r(1<=l<=r<=n),并观看第l,l+1,…,r天内所有的电影 如果同一部电影你观看多于一次,你会感到无
阅读全文
摘要:【传送门:BZOJ3212】 简要题意: 给出一段序列,有两种操作: 1.Q l r求出l到r的和 2.C l r c将l到r的值加c 题解: 线段树水题 区间修改+区间询问,加个标记处理 注意加long long 参考代码:
阅读全文
摘要:【传送门:BZOJ3252】 简要题意: 给出一棵树,树上的每个节点都有权值,现在要遍历这棵树的k条链,权值为链上的节点权值和,每个节点的权值只有在第一次被遍历的时候才能用,也就是每个节点遍历两遍只能得到一次的权值,求出最大能得到的权值和 题解: 哇塞,直接就给一棵树,而且输入还直接告诉你两个点的父
阅读全文
摘要:【传送门:BZOJ5029&BZOJ5168】 简要题意: 给出m段区间l[i],r[i],表示l[i]到r[i]的数全部变成i,求出最后有多少种不同的数 题解: 线段树+离散化 这是一道经典例题 先离散化l和r,注意如果离散的时候,两个值相差大于1,就要新加一个值 然后线段树维护区间颜色就行了 参
阅读全文
摘要:【传送门:BZOJ3038】 简要题意: 给出一个序列,对这些序列进行两种操作: 1 x y求出x到y的和 2 x y将x到y的数全部开方(向下取整) 题解: 同BZOJ3211 参考代码:
阅读全文
摘要:【传送门:BZOJ3211】 简要题意: 给出一个序列,对这些序列进行两种操作: 1 x y求出x到y的和 2 x y将x到y的数全部开方(向下取整) 题解: 线段树+面向数据编程 线段树显然不可以整体开方,所以必须要一个一个开,一般来说是超时的 但是因为每个数不超过109,所以每个数最多只会开5次
阅读全文
摘要:【传送门:BZOJ3155】 简要题意: 给出一个序列a[i],s[i]表示a[1]到a[i]的和,ss[i]表示s[1]到s[i]的和,对于这个序列有两种操作: 1.Query x,输出ss[x] 2.Modify x d,将a[x]改为d 题解: 本来想用树状数组,结果写炸了 还是老老实实写线段
阅读全文