2018年8月30日

线段树区间更新

摘要: 区间更新:运用延迟标记(或则说是懒惰标记),简单说就是每次更新的时候不要更新到底,运用延迟标记使得更新延迟到下次需要更新或者询问的时候。 HDU1698 Just a Hook 线段树功能:update成段区间更新,由于query只查询总区间,所以直接输出1结点(根节点)。 #include<bit 阅读全文

posted @ 2018-08-30 20:10 solvit 阅读(181) 评论(0) 推荐(0)

线段树单点更新

摘要: 单点更新:最基础的线段树,只更新叶子结点,然后用PushUp函数将信息更新上来。 HDU1166 敌兵布阵 线段树功能:update单点增减,query区间求和。 #include<bits/stdc++.h> using namespace std; #define lson l, mid, ro 阅读全文

posted @ 2018-08-30 13:39 solvit 阅读(344) 评论(0) 推荐(0)

2018 “百度之星”程序设计大赛 - 复赛

摘要: 1001 没有兄弟的舞会 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 100005; int t,n; int a[maxn],fa[maxn]; struct node { 阅读全文

posted @ 2018-08-30 13:38 solvit 阅读(267) 评论(0) 推荐(0)

线段树个人代码风格

摘要: · maxn是题目所给的最大区间,即数据范围,当然有时候会做离散化。结点数要开4*maxn,准确地说是大于maxn的最小的2^x的两倍。 · lson和rson分别表示节点的左儿子和右儿子。 · PushUp(int root)是把当前节点的信息更新到父亲结点。 · PushDown(int roo 阅读全文

posted @ 2018-08-30 12:40 solvit 阅读(148) 评论(0) 推荐(0)

导航