洛谷 P1840 【Color the Axis_NOI导刊2011提高(05)】 题解
看了一下题解,显然在做无用功啊,而且麻烦了许多,但是这道题真心不难,显然是一个区间修改的题目,然后查询的题目
我的线段树只需要记录一个量:区间和
看了一下其他题解的pushdown函数,发现真心写的很麻烦
这里有一个很巧妙的解法:
如果这个区域被染成了白棋,那么直接把这个区间总和清零就好了
然后向下传值,只需要把他的儿子节点sum清零就好了
那就直接上代码吧
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<queue> 6 #include<stack> 7 #include<vector> 8 #include<map> 9 #include<set> 10 #include<algorithm> 11 12 #define lson i*2,l,mid 13 #define rson i*2+1,mid+1,r //宏定义 14 #define I_copy_the_answer return 0; 15 using namespace std; 16 17 int n,m; 18 struct tree{ 19 int l,r,sum; 20 }t[1000860]; //线段树最大可能达到四倍空间,因此数组开四倍以上 21 22 void build_tree(int i,int l,int r) 23 { 24 t[i].l=l; //这东西没什么用,但是查错的时候挺方便的 25 t[i].r=r; 26 if(l==r) 27 { 28 t[i].sum=1; //每一个黑色棋子 29 return ; 30 } 31 int mid=(l+r)/2; 32 build_tree(lson); 33 build_tree(rson); 34 t[i].sum=t[i*2].sum+t[i*2+1].sum; //这个不多睡了吧 35 return ; 36 } 37 38 int pushdown(int i) //简短的pushdown 39 { 40 if(!t[i].sum) //!即取反 0取反即1 41 t[i*2].sum=0,t[i*2+1].sum=0; 42 } 43 44 void change_tree(int i,int l,int r,int a,int b) 45 { 46 if(l>=a&&r<=b) 47 { 48 t[i].sum=0; 49 return ; 50 } 51 pushdown(i); 52 int mid=(l+r)/2; 53 if(a<=mid) change_tree(lson,a,b); 54 if(b>mid) change_tree(rson,a,b); 55 t[i].sum=t[i*2].sum+t[i*2+1].sum; 56 return ; 57 } 58 59 int ask_color_tree(int i,int l,int r,int a,int b) //这个函数其实可以不写,输出t[1].sum即可,但是为了演示一下写了出来 60 { 61 if(l>=a&&r<=b) 62 { 63 return t[i].sum; 64 } 65 pushdown(i); 66 int mid=(l+r)/2; 67 int ans=0; 68 if(a<=mid) ans+=ask_color_tree(lson,a,b); 69 if(b>mid) ans+=ask_color_tree(rson,a,b); 70 return ans; 71 } 72 73 int main() 74 { 75 int i,j; 76 scanf("%d %d",&n,&m); 77 build_tree(1,1,n); 78 for(i=1;i<=m;i++) 79 { 80 int t1,t2; 81 scanf("%d %d",&t1,&t2); 82 change_tree(1,1,n,t1,t2); 83 printf("%d\n",ask_color_tree(1,1,n,1,n)); //可以不要,直接输出t[1].sum 84 } 85 I_copy_the_answer //你就别抄这个代码了吧 86 }
转载于:https://www.cnblogs.com/zsx6/p/11174399.html
洛谷 P1840 【Color the Axis_NOI导刊2011提高(05)】 题解相关推荐
- 洛谷 P1795 无穷的序列_NOI导刊2010提高(05)
P1795 无穷的序列_NOI导刊2010提高(05) 题目描述 有一个无穷序列如下: 110100100010000100000- 请你找出这个无穷序列中指定位置上的数字 输入输出格式 输入格式: ...
- 【洛谷P1795 无穷的序列_NOI导刊2010提高(05)】模拟
分析 map搞一下 AC代码 #include <bits/stdc++.h> using namespace std; map<int,int> mp; inline int ...
- 单人纸牌_NOI导刊2011提高(04)
单人纸牌 时间限制: 1 Sec 内存限制: 128 MB 题目描述 单人纸牌游戏,共 36 张牌分成 9 叠,每叠 4 张牌面向上.每次,游戏者可以从某两个不同的牌堆最顶上取出两张牌面相同的牌(如 ...
- 洛谷P1807 最长路_NOI导刊2010提高(07) 求有向无环图的 最长路 图论
洛谷P1807 最长路_NOI导刊2010提高(07) 图论 求有向无环图的 最长路 首先阐明一点 最长路dijkstra 是不能做 (当然我是不会做的,不过我貌似看到过网上的dalao有用dijst ...
- 洛谷 P1800 software_NOI导刊2010提高(06)(二分答案+DP检验)
P1800 software_NOI导刊2010提高(06) 标签 二分答案 难度 普及/提高- 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每 ...
- 洛谷 P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)
P1796 汤姆斯的天堂梦_NOI导刊2010提高(05) 题目描述 汤姆斯生活在一个等级为0的星球上.那里的环境极其恶劣,每天12小时的工作和成堆的垃圾让人忍无可忍.他向往着等级为N的星球上天堂般的 ...
- 洛谷——P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵(斐波那契数列)...
P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵 斐波那契数列 1.x,y∈[1-k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满 ...
- 洛谷—— P1775 古代人的难题_NOI导刊2010提高(02)
P1775 古代人的难题_NOI导刊2010提高(02) 题目描述 门打开了,里面果然是个很大的厅堂.但可惜厅堂内除了中央的一张羊皮纸和一支精致的石笔,周围几具骷髅外什么也没有.难道这就是王室的遗产? ...
- P1800 software_NOI导刊2010提高(06)
P1800 software_NOI导刊2010提高(06) 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术 ...
最新文章
- 如何给女朋友解释为什么Java里面的String对象是不可变的?
- js学习笔记1---使用方法
- TAP/TUN Vnet veth
- 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01
- Python的正则表达式和爬虫
- mysql对其他IP授权访问
- OpenCASCADE绘制测试线束:几何命令之展示
- 做产品:光有换位思考还不够
- ThinkPHP多次重复提交问题的根源
- XMLhttp学习应用
- Linux Shell脚本编程-语句控制
- php json schema,json-schema-php
- mysql jemalloc_MySQL性能测试--jemalloc内存管理
- matlab 中输入log就是ln吗?(ln就是log以e为底的对数)
- 从浏览器中获取headers
- CS231n课程笔记翻译:卷积神经网络笔记
- 作为人才我们为什么要和几个猎头保持良好的关系?
- Photoshop-选区的应用
- WebRTC 音视频同步分析
- 使用java的方式配置Spring---JavaConfig
热门文章
- 学堂在线计算机网络工程实践答案,计算机网络实验(本科生2017年春)
- python3打包app_python3打包脚本
- android 链式结构,Android 架构师之路10 设计模式之责任链模式
- python不同颜色散点图_Python+matplotlib绘制不同大小和颜色散点图实例
- 芜湖机器人餐厅地址_自助餐哪家强?得看谁让你扶墙... 芜湖8家自助餐厅超强攻略来了...
- struts的action访问servlet的IOC方式与非IOC方式
- JavaScript基础-基本数据类型和基本流程控制
- 洛谷P2770 航空路线问题(费用流)
- 2017北京国庆刷题Day2 afternoon
- 使用tmpfs的好处