
线段树
huanzhizun
这个作者很懒,什么都没留下…
展开
-
线段树之扫描线
#include#include#include#include#include#include#define eps 1e-12using namespace std;struct pi{ int l; int r; int cover; double len;}pp[2005];struct line{ double up;原创 2014-04-28 13:04:02 · 514 阅读 · 0 评论 -
hdu 5840 This world need more Zhu (2016CCPC 网络赛1009) 分块+线段树
很明显分块,但是如果k>block我们不能用倍增,那怎么做?很简单dfs记录队列中的顺序即可。然后k#include#include#include#include#include#include#define mp(a,b) make_pair(a,b)using namespace std;const int maxn=410005;const int N=100005;原创 2016-08-16 22:31:30 · 783 阅读 · 0 评论 -
hdu 5764 After a Sleepless Night(2016多校第四场1002) 线段树
显然对于值为n的点一定构成链,然后我们只需要把两端最小的点作为根(为了字典序),然后就好办了,对于每棵子树根一定是最大值,然后最大值也一定形成链,这样我们就能把所有能确定的点确定下来(根的底端),然后不能确定的点的值一定小于等于输入的全值,下面介绍个人的处理方法:我们从没有分配的最小的权值开始,因为字典序所以要分配给序号小的点,那么怎么办,我们可以先把所有未分配的店按输入的权值从小到大排序,对原创 2016-07-29 14:58:38 · 496 阅读 · 0 评论 -
hdu 5737 Differencia (2016多校第二场1004)
线段树log^2的复杂度很显然,怎么优化?其实我们知道一个有序的数组从根往下传是依然有序,只是位置变化了而已,那么我们从根开始维护每个有序数组往下传的时候每个位置在子树中的位置,所以只需要开始的时候二分一下即可。#include#include#include#include #includeusing namespace std;const int maxn=100005;c原创 2016-07-23 10:53:41 · 651 阅读 · 0 评论 -
hdu 5196 DZY Loves Inversions(线段树+树状数组+离线+two points)
先离散化数组,定义了两个数组r[i]和r1[i],r[i]表示min{ j( j~i的逆序数对小于等于k)},r1[i]表示min{ j( j~i的逆序数对小于k)},然后离线处理查询,接着从1开始遍历每个位置,假如遍历到i如果r[i]有个超级大坑点就是1个数的逆序数对也为0,所以k=0的时候一定要考虑到这点(wa了一上午)。#include#include#include#原创 2015-03-29 14:28:57 · 439 阅读 · 0 评论 -
hysbz 1036 树的统计Count 树链剖分
板题。#include#include#include#include#define maxn 30005#define inf 0x3fffffffusing namespace std;int dep[maxn],top[maxn],fa[maxn],son[maxn],size[maxn],id[maxn],num,tot,a[maxn],head[maxn];stru原创 2014-11-14 23:03:20 · 490 阅读 · 0 评论 -
poj 2763 Housewife Wind 树链剖分
简单树链剖分。原创 2014-11-14 22:58:00 · 463 阅读 · 0 评论 -
hdu 3966 Aragorn's Story 树链剖分
树链剖分板题。原创 2014-11-14 22:55:44 · 574 阅读 · 0 评论 -
最长上升子序列nlogn通解(dp之线段树优化)
对于任何一个子序列,我们可以轻易d'l原创 2014-10-07 18:38:32 · 1741 阅读 · 1 评论 -
poj 3237 Tree 树链剖分+lazy标记
比较麻烦的树链剖分,其中Neg表示a、b之间所有数qu原创 2014-11-14 22:59:14 · 435 阅读 · 0 评论 -
Acdream 1126 Beautiful People(最长上升子序列,dp+线段树优化)
先按x排序,对于相同的x分块处理,也就是原创 2014-10-07 18:51:24 · 583 阅读 · 0 评论 -
Codeforces Round #271 (Div. 2) E Pillars(dp+线段树优化)
题目要求abs(d[i]-d[j])>=d,也就是原创 2014-10-07 18:56:32 · 619 阅读 · 1 评论 -
三维扫描线
分坐标进行扫描,利用体积。#include#include#include#include#include#define maxn 50005using namespace std;typedef __int64 LL;int y[maxn<<1];int z[maxn<<1];int tot;struct pi{ int x1; int y1;原创 2014-09-05 08:23:31 · 619 阅读 · 0 评论 -
区间离散化
很多题要求对段改变,由于段端点范围比较大所以没办法开数组,但shu原创 2014-06-07 20:16:02 · 2327 阅读 · 0 评论 -
线段树之区间合并
合并区间需要lazy标记并且需要把左边和右边zhuang'ta原创 2014-06-07 20:10:41 · 615 阅读 · 0 评论 -
POJ 3667 Hotel
线段树区间合并经典题。原创 2014-06-07 20:12:01 · 421 阅读 · 0 评论 -
Codeforces Round #397 F Souvenirs(线段树)
考虑离线,我们从左往右扫,对于现在的点i,我们先找到离i最近的j使得a[j]>=a[i],然后我们可以知道询问左区间在1~j的询问的答案小于等于a[j]-a[i],我们可以用线段树更新答案,然后还可能存在f=a[i],a[f]-a[i]#include#include#include#include#include#includeusing namespace std;const原创 2017-02-20 14:39:45 · 505 阅读 · 0 评论