众所周知,这是一道小清新线段树 然而可以用树状数组水过去且跑得飞快 看到区间开方第一反应肯定是线段树懒标记区间修改之类的,但是这个东西似乎确凿不可维护 所以考虑暴力循环单点修改->T飞 于是我们关注一下开方本身的特殊性 我们知道,如果每次向下取整,一个数经过多次操作最终会变成1(或0) 事实上,大概 ...
分类:
编程语言 时间:
2019-06-12 10:43:23
阅读次数:
145
点修改 Update(x,v): 吧Ax修改为v Query(L,R): 计算{AL,AL+1,...,AR} minv[o]表示节点o所对应的区间中所有元素的最小值 区间修改 Add(L, R, v): 把AL, AL+1, ..., AR的值全部增加v Query(L, R): 计算子序列AL, ...
分类:
其他好文 时间:
2019-06-11 12:56:19
阅读次数:
96
题意就是让我们维护一个数据结构,可以实现区间修改和区间查询多少个数大于等于给定值。这个据说线段树可以写但是我并没有想到qwq,于是我使用了“优雅的暴力”——分块。 分块做法十分显然,我们维护大小为√n的块(√n的块根据均值不等式复杂度取得最小值),维护一个lazy标记,区间修改的话,如果修改的区间是 ...
分类:
其他好文 时间:
2019-06-08 20:30:41
阅读次数:
150
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 typedef long long ll; 7 8 const int N=2 ...
分类:
其他好文 时间:
2019-06-07 12:57:47
阅读次数:
93
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 const int N=1e5+5; 6 int n,m; 7 int sum[N<<2],laze[N<<2]; //延迟标记 8 9 void Update( ...
分类:
其他好文 时间:
2019-06-06 23:01:40
阅读次数:
133
"题面" 解析 首先,我们考虑下暴力的做法: 每次将一个任务的重要度加入到它的区间中, 询问的时候就直接加前$k$大. 然而,这样肯会炸的(都说了是暴力了). 其实,我们可以转化一下区间修改(因为区间修改似乎并不好做哈qwq) 利用前缀和与差分的思想(不会的请自行百度下), 将要修改的区间转化为单点 ...
分类:
其他好文 时间:
2019-06-06 19:22:58
阅读次数:
74
题目链接:http://poj.org/problem?id=3468 You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to ...
分类:
其他好文 时间:
2019-05-23 20:52:51
阅读次数:
130
【原题题面】传送门 【思考过程】 树剖板子。 说好了这题写Dfs序。 好我已经看出来了这题用树状数组不是很好搞。 opt1:单点修改 opt2:区间修改 opt3:“区间查询” 从根节点到x的路径上的点在dfs序上的表现是:时间戳便利到当前结点,只有in还没有out,即只进入对应的子树还没有返回到自 ...
分类:
其他好文 时间:
2019-05-18 21:06:17
阅读次数:
166
线段树的区间修改里有对其区间数全部进行" ^ "或者" | "位运算,我们可以利用这两个位运算的特性来进行修改(这两个都只需记录1的个数即可)。 “ | ”:由于它只要二进制上有1则为1,所以我们只需知道它二进制有无1即可。有则改为区间长度个数的1。 “ ^ ":由于它二进制上两者不同才为1,所以我 ...
分类:
其他好文 时间:
2019-05-13 14:33:39
阅读次数:
142
"[HAOI2012]高速公路" 有N 1段路和N个点组成的链,方向从小到大,点上有权值,定义一条边的边权为其入点的点权,M次操作,区间修改和询问点l到r的子路径的边权和期望。 解 显然需要链转区间,于是修改l,r不变,询问 r即可变为区间问题,现在问题是求l r的子区间和的期望,显然概率固定,考虑 ...
分类:
其他好文 时间:
2019-05-11 21:49:46
阅读次数:
131