CodeForces121E 线段树上线段果】的更多相关文章

Problem Description In a galaxy far, far away, there are two integer sequence a and b of length n.b is a static permutation of 1 to n. Initially a is filled with zeroes.There are two kind of operations:1. add l r: add one for al,al+1...ar 2. query l…
http://codeforces.com/problemset/problem/121/E 题意: Petya 喜欢幸运数,幸运数只包含 4 和 7 这两个数字.例如 47,744,4 都是幸运数字,但 5,16,467 不是. Petya 有一个 N 个数的数组,他想给这个数组执行 M 个操作,可以分为两种操作: add l r d 把第 l 到 第 r 个数都加上 d: count l r 统计第 l 到第 r 个数有多少个幸运数字. 喜闻乐见的数据结构题. 更加喜闻乐见的是这题能用树状数…
题目:https://loj.ac/problem/3059 一段 A 选一个 B 的话, B 是这段 A 的平均值.因为 \( \sum (A_i-B)^2 = \sum A_i^2 - 2*B \sum A_i + len*B^2 \) ,这是关于 B 的二次方程,对称轴是 \( B = - \frac{-2*\sum A_i}{2*len} \) ,恰是 A 的平均值. 所以自己前 10 分写了 “ dp[ i ][ j ] 表示前 i 个 A .最后一段的 B = j ” 的 DP ,…
题目链接:http://codeforces.com/gym/101149/problem/G 题目大意:给你n对数字,为(a[i], b[i]),给你m对数字,为(w[i], c[i]).给n对数字找配对,这个配对必须是m中的,而且m中的每个只能和n中的配对一次. 配对条件,w[i]>=a[j], c[i]>=b[j]即可配对. 输出n个数字,每个数字在m个数字当中的配对. 思路:假定n对数字的是x,m对数字的是y 离散化以后sort一下x和y,这样我们就得到了第一维是排序好了的. 然后我们…
[题意]给定n棵高度初始为0的草,每天每棵草会长高a[i],m次收割,每次在d[i]天将所有>b[i]的草收割到b[i],求每次收割量.n<=500000. [算法]线段树上二分 [题解]按照生长速度a[]排序后,容易发现数列永远单调. 在线段树上的区间维护以下值: 1.最后一棵草的高度a 2.上次收割日期b 3.总的草高和c 4.总的生长速度和d 5.收割标记D和B 上传的时候注意右区间收割晚于左区间时强制合并. 下传的时候注意标记D和B直接覆盖. 线段树上二分: 1.判断当前区间是否符合(…
from NOIP2016模拟题28 题目大意 n个点的序列,权值\(<=10^6\) q个操作 1.单点修改 2.求所有区间gcd中,不同数个数 分析 1.以一个点为端点,向左或向右的gcd种数都只有\(\log Maxval\)种且收敛很快 1.权值较小可以用桶统计一个gcd的出现次数 做法1(正解)线段树上二分 \(n \log n\)递推预处理出以每个点为右端点的gcd 顺便记录每种gcd出现的最左位置,用于统计数量,更新到桶里 可以用一颗线段树维护单点修改,区间gcd 考虑一次修改x(…
[题意概述] 一个区间的Mex为这个区间没有出现过的最小自然数,现在给你一个序列,要求求出所有区间的Mex的和. [题解] 扫描线+线段树. 我们在线段树上维护从当前左端点开始的前缀Mex,显然从左到右Mex单调上升. 然后我们把区间左端点逐渐向右边移动,也就是扫描线是左端点. 我们可以发现每次移动的影响就是 [这个数的位置, 这个数下一次出现的位置) 这个区间内大于这个数的Mex全部变为这个数. 那么我们在线段树上二分出第一个大于等于Mex的位置,然后区间修改即可. #include<cstd…
Description “我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力.”——<The Grimoire of Marisa>雾雨魔理沙魔理沙一如既往地去帕秋莉的大图书馆去借魔导书(Grimoire) 来学习魔道.最开始的时候,魔理沙只是一本一本地进行研究.然而在符卡战中,魔理沙还是战不过帕秋莉.好在魔理沙对自己的借还和研究结果进行了记录,从而发现了那些魔导书的精妙之处.帕秋莉的那些魔导书,每本都有一个类别编号ti 和威力大小pi.而想要获…
线段树上\(DP\) 首先发现,每个数肯定是向自己的前驱或后继连边的. 则我们开一棵权值线段树,其中每一个节点记录一个\(f_{0/1,0/1}\),表示在这个区间左.右端点是否连过边的情况下,使这个区间符合条件的最小代价. 合并时考虑如果左儿子的右端点或右儿子的左端点中有一个没有连过边,就必须连边,否则就不连边. 然后我的写法比较蠢,不知道为什么当左右儿子中某个节点只有一个数时需要特判处理. 最后答案就是根节点的\(f_{1,1}\). 具体详见代码. 代码 #include<bits/std…
我好像国赛以后就再也没有写过 OI 相关的博客 qwq Upd: 这篇博客是 NOIP (现在叫 CSP 了)之前写的,但是咕到 CSP 以后快一个月才发表 -- 我最近这么咕怎么办啊 -- 题目 洛谷 5537 分析 这道题可以说是非常神了.这题看上去无从下手,但是 通过膜拜题解 后能发现一些美妙的性质.树是不修改的,任意一对祖先 - 后代之间的路径一定都可以表示成一个 固定的 整数序列.并且,如果 \(u,v,w\) 是祖先 - 后代且深度递增,则 \((u,v)\) 的序列与 \((v,w…