校门三部曲,总算完结了!完结散花!
难度呈阶梯状,都可以用线段树解决。
第一部
P1047 校门外的树(线段树优化)难度⭐⭐
第二部
P1276 校门外的树(增强版)(线段树)校门三部曲难度⭐⭐⭐
第三部
P5568 [SDOI2008]校门外的区间(离散数学应用+线段树+开闭区间处理)难度⭐⭐⭐⭐★

本题题目链接

线段树版本
线段树优化O(logN+N)O(logN+N)O(logN+N),本题数据太小差别不大
需要注意的是本题中L是总长度,带到代码里是从1开始的n个点,所以建树的时候应该范围应该是1~n+1,所以修改区间的时候。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+7;
const ll mod=2147483647;
ll n,m;
struct node
{ll l,r,sum,lz;
}tree[N];
void build(ll i,ll l,ll r)
{tree[i].lz=0;tree[i].l=l;tree[i].r=r;if(l==r){tree[i].sum=1;return;}ll mid=(l+r)/2;build(i*2,l,mid);build(i*2+1,mid+1,r);tree[i].sum=tree[i*2].sum+tree[i*2+1].sum;return ;
}
inline void push_down(ll i)
{if(tree[i].lz!=0){tree[i].lz=0;tree[i*2].lz=1;tree[i*2+1].lz=1;tree[i*2].sum=0;tree[i*2+1].sum=0;}return ;
}
inline void add(ll i,ll l,ll r)
{if(tree[i].l>=l&&tree[i].r<=r){tree[i].sum=0;tree[i].lz=1;return;}push_down(i);if(tree[i*2].r>=l)add(i*2,l,r);if(tree[i*2+1].l<=r)add(i*2+1,l,r);tree[i].sum=tree[i*2].sum+tree[i*2+1].sum;return;
}
int main()
{scanf("%lld %lld",&n,&m);build(1,1,n+1);for(int i=1;i<=m;++i){ll a,b;scanf("%lld %lld",&a,&b);add(1,a+1,b+1);}printf("%lld\n",tree[1].sum);return 0;
}

有任何疑问欢迎评论哦虽然我真的很菜
点个关注再走吧

P1047 校门外的树(线段树优化)(校门三部曲)难度⭐⭐相关推荐

  1. 树套树-线段树套平衡树

    作用 线段树的作用是区间修改和查询,平衡树的作用是查询第k大,k的排名,前驱,后继.这两个结合起来,就变成了可以区间修改和查询第k大,k的排名,前驱,后继的数据结构:树套树-线段树套平衡树. 实现 先 ...

  2. 线段树 ---- 线段树维护线段相加+滑动变长窗口 2021牛客多校第7场 F xay loves trees

    题目大意: 给你两个大小相同的树但是形状不一定一样 叫你选出最大的子集,满足下面两个条件 在第一颗树上是一条链 在第二颗树上任意两个点都不是祖先关系 解题思路: 首先我们现在第二颗树上面把每个点的df ...

  3. BZOJ 3685: 普通van Emde Boas树( 线段树 )

    建颗权值线段树就行了...连离散化都不用... 没加读入优化就TLE, 加了就A掉了...而且还快了接近1/4.... ---------------------------------------- ...

  4. YbtOJ#752-最优分组【笛卡尔树,线段树】

    正题 题目链接:http://www.ybtoj.com.cn/problem/752 题目大意 nnn个人,每个人有cic_ici​和did_idi​分别表示这个人所在的队伍的最少/最多人数. 然后 ...

  5. 线段树线段树的创建线段树的查询单节点更新区间更新

    目录 线段树 什么是线段树? 线段树的创建 线段树的查询 单节点更新 区间更新 未完待续 线段树 实现问题:常用于求数组区间最小值 时间复杂度:(1).建树复杂度:nlogn.(2).线段树算法复杂度 ...

  6. loj 523 「LibreOJ β Round #3」绯色 IOI(悬念) 霍尔定理+基环树+线段树

    题目分析 神仙题(确信) 首先,j−aij-a _ ij−ai​和ai−ja _ i-jai​−j互为相反数,若其中最小值为bib _ ibi​,则一个为bib _ ibi​一个为m−bim-b _ ...

  7. hdu4117 GRE Words(ACAM+fail树+线段树)

    首先我们有如果i< j,且sisis_i为sjsjs_j的子串,那么有转移f[j]=f[i]+w[j]f[j]=f[i]+w[j]f[j]=f[i]+w[j] 其中f[i]f[i]f[i]表示以 ...

  8. 2021CCPC(桂林) - Suffix Automaton(后缀树+线段树)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,再给出 qqq 次询问,每次询问需要输出本质不同第 kkk 小的子串的起止位置.如果有多个答案,输出起点最小的那个. 本题规定字符串大小 ...

  9. 牛客 - sequence(笛卡尔树+线段树)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a 和数列 b ,求 题目分析:不算难的题目,对于每个 a[ i ] 求一下贡献然后维护最大值就好,具体思路就是,先找出每个 a[ i ] 左 ...

  10. HDU - 4417 Super Mario(主席树/线段树+离线)

    题目链接:点击查看 题目大意:给出由 n 个数的数列,再给出 m 次查询,每次查询需要输出 [ l , r ] 内小于等于 h 的数有多少个 题目分析:大晚上睡不着觉随便做做题,发现这个题目原来可以用 ...

最新文章

  1. VTK:隐式平面小部件用法实战
  2. Spring配置文件简介
  3. .NET 实现并行的几种方式(三)
  4. Linux下使用Iptraf进行网络流量的分析
  5. Linux内核内存管理(1):内存块 - memblock
  6. 苹果iOS手机暗藏间谍软件的揭秘者:扎徳尔斯基
  7. AutoGluon-windows学习笔记(1)
  8. android 4.4 surfaceflinger 渲染,Android4.4.3--surfaceflinger导致系统起不来,ldb显示问题...
  9. 相濡以沫,不如相忘于江湖
  10. python:文件写入出现ASII编码
  11. 音频录制(react)
  12. ubuntu16.04下安装dnw和fastboot工具,解决开发板只有uboot系统,没有网络的情况下,通过dnw和fastboot传送文件到开发板
  13. 成都链安预警:eos竞猜游戏FASTWIN遭黑客攻击 损失近700eos
  14. 阿里云的这群疯子- 文/史中
  15. Django验证码*短信验证码之2-容联云通讯短信平台(联云通讯短信平台介绍、容联云通讯Python SDK、封装发送短信单例类)
  16. linux编辑登录欢迎界面
  17. 07-Web storage
  18. 当前最为流行的可视化大屏都是怎么做的?
  19. 3d图形消隐c语言,一种3D图形背面消隐算法及其硬件加速实现
  20. 4.java基础-static

热门文章

  1. 快速系统从零学习OpenCV 4路线图
  2. ASP调用存储过程返回了一个参数和一个记录集时出现ADODB.Recordset 错误 '800a0e78'...
  3. Linux shell日常使用
  4. Python 23天 序列化
  5. 洛谷 P1309 瑞士轮
  6. UWP Composition API - 锁定列的FlexGrid
  7. 邮件客户端WebMail Pro v7.7.5发布,在线订购限时75折优惠!
  8. IT十八掌作业_java基础第十八天_项目完善
  9. Java反射机制分析指南
  10. 解决THINKPHP 支付宝接口异步notify 无效可能的问题。