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

本题题目链接


因为本题只需要最后询问一次即可,所以不需要一直更新答案
建两棵线段树(两颗最好用结构体建树比较方便)
种树只在第一棵树种,第一棵树是树和苗的总和,第二颗树只有树
tree[0].ans是砍去的树和树苗的总和
tree[1].ans是砍去的树
对于第一问,留下的树苗数等于:留下的(树与树苗)总数减去留下的(树)的总数。
对于第二问,种上又被拔掉的树苗数等于:被砍掉的(树与树苗)总数减去被砍掉的(树)的总数。

#include<bits/stdc++.h>
#define ls (p<<1)
#define rs (p<<1|1)
#define mid ((l+r)>>1)
using namespace std;typedef long long ll;
const ll N=1e4+7;
ll n,m;struct segment
{ll lz[N<<2];ll sum[N<<2];ll ans;segment(){ans=0;memset(lz,0,sizeof lz);memset(sum,0,sizeof sum);}void build(ll p,ll l,ll r){if(l==r){sum[p]=1;return ;}build(ls,l,mid),build(rs,mid+1,r);sum[p]=sum[ls]+sum[rs];}void push_down(ll p,ll l,ll r){if(lz[p]==1)//种{lz[ls]=lz[rs]=1;sum[ls]=mid-l+1;sum[rs]=r-mid;}if(lz[p]==-1)//砍{lz[ls]=lz[rs]=-1;sum[ls]=sum[rs]=0;}lz[p]=0;}void plant(ll p,ll l,ll r,ll L,ll R){if(L<=l&&r<=R){lz[p]=1;sum[p]=r-l+1;return;}push_down(p,l,r);if(L<=mid)plant(ls,l,mid,L,R);if(mid+1<=R)plant(rs,mid+1,r,L,R);sum[p]=sum[ls]+sum[rs];}void cut(ll p,ll l,ll r,ll L,ll R){if(L<=l&&r<=R){lz[p]=-1;ans+=sum[p];//先加上sum[p]=0;//再砍掉return ;}push_down(p,l,r);//因为上面是没有往下操作的所以必须push_down往下更新if(L<=mid)cut(ls,l,mid,L,R);if(mid+1<=R)cut(rs,mid+1,r,L,R);sum[p]=sum[ls]+sum[rs];}
}tree[2];
#undef mid
int main()
{scanf("%lld %lld",&n,&m);n++;tree[0].build(1,1,n);tree[1].build(1,1,n);for(int i=1;i<=m;++i){ll p,l,r;scanf("%lld %lld %lld",&p,&l,&r);l++,r++;if(p==0)tree[0].cut(1,1,n,l,r),tree[1].cut(1,1,n,l,r);if(p==1)tree[0].plant(1,1,n,l,r);//只种第一棵树}printf("%lld\n",tree[0].sum[1]-tree[1].sum[1]);printf("%lld\n",tree[0].ans-tree[1].ans);return 0;
}

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

P1276 校门外的树(增强版)(线段树)(校门三部曲)难度⭐⭐⭐相关推荐

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

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

  2. 暑假集训8.10-网络流套树剖套线段树

    题目:dtoj2797旅行商 其实就是裸的网络流套树剖套线段树其实代码不难码 emmmmmm我决定草率的直接上代码,这可能是一条无营养的博客.... #include<bits/stdc++.h ...

  3. 【BZOJ-3196】二逼平衡树 线段树 + Splay (线段树套平衡树)

    3196: Tyvj 1730 二逼平衡树 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2271  Solved: 935 [Submit][St ...

  4. 势能线段树/吉司机线段树-我没有脑子

    势能线段树/吉司机线段树 BZOJ3211 花神游历各国 BZOJ5312 冒险 BZOJ4355 Play with sequence BZOJ4695 最假女选手 \(A_i = max(A_i, ...

  5. 【BZOJ-2325】道馆之战 树链剖分 + 线段树

    2325: [ZJOI2011]道馆之战 Time Limit: 40 Sec  Memory Limit: 256 MB Submit: 1153  Solved: 421 [Submit][Sta ...

  6. BZOJ3862Little Devil I——树链剖分+线段树

    题目大意: 给一棵树,每条边可能是黑色或白色(起始都是白色),有三种操作: 1.将u到v路径上所有边颜色翻转(黑->白,白->黑) 2.将只有一个点在u到v路径上的边颜色翻转 3.查询u到 ...

  7. CodeForces - 160D Edges in MST(思维+tarjan/树链剖分+线段树)

    题目链接:点击查看 题目大意:给出一张 n 个点 m 条边组成的带权无向图,现在对于每条边来说,确定一下其分类: 一定是最小生成树上的边 可能是最小生成树上的边 一定不是最小生成树的边 题目分析:两种 ...

  8. CodeForces - 609E Minimum spanning tree for each edge(最小生成树+树链剖分+线段树/树上倍增)

    题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的无向图,现在询问包含每一条边的最小生成树 题目分析:考虑求解次小生成树的思路: 求出最小生成树 ans 枚举每一条非树边 ( u , ...

  9. 主席树——多棵线段树的集合

    主席树: (不要管名字) 我们有的时候,会遇到很多种情况,对于每一种情况,都需要通过线段树的操作实现. 碰巧的是,相邻两种情况下的线段树的差异不大.(总体的差异次数是O(N)级别的,均摊就是O(常数) ...

  10. P2486 [SDOI2011]染色(树链剖分+线段树)

    题干描述 输入描述 输出格式 对于每个询问操作,输出一行答案. 输入输出样例 输入 #1 复制 6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C 2 1 1 Q ...

最新文章

  1. Flash Builder 找不到所需的Adobe Flash Player调试器版本的解决办法
  2. iOS开发UI篇—懒加载
  3. 零基础学python看什么书-零基础学python推荐几本python学习的书籍
  4. 参数整定临界比例度实验_PID控制及参数调节,你真的懂了吗?
  5. 将一个指针 free 两次之后会发生什么?
  6. c语言转汇编语言 vs,C语言转换成汇编语言
  7. Numeric tile and other files loaded in Smart Template tile render launch
  8. python热成像_在python中自动从图像中移除热/死像素
  9. html知识笔记(一)——head和body标签
  10. centos7修改命令行或图形界面启动模式
  11. 【C语言】爱心表白代码
  12. 免费录屏软件有哪些?分享4个专业录屏软件
  13. 闲置android平板电脑,让闲置的iPad / Android平板电脑成为计算机屏幕的扩展监视器!...
  14. 天涯 大神 kkndme 房地产 调控
  15. 信息可视化中的重要准则——以扇贝单词app中的可视化为例
  16. 劳资蜀道山!6个高质量免费电子书网站!我看谁还不知道
  17. sql同一张表统计数据生成多个统计列
  18. 关于naked (C++)
  19. 机械键盘和普通键盘的区别
  20. 你活着的意义是什么?(灵魂拷问)

热门文章

  1. Centos7.4安装kvm虚拟机(使用virt-manager管理)
  2. 深入解析Java OutOfMemoryError
  3. Aspose.words 书签定位
  4. Linux运维人员成长之路学习书籍推荐
  5. joomla 插入百度地图
  6. wget使用代理下载
  7. 在PHP中实现StringBuilder类
  8. 如何在GNOME中添加自己的菜单项
  9. h264中profile和level的含义
  10. php 爬虫_Scrapy 爬虫完整案例-基础篇