博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1199 && ZOJ 2301 线段树离散化
阅读量:6440 次
发布时间:2019-06-23

本文共 1426 字,大约阅读时间需要 4 分钟。

一段长度未知的线段。一种操作:a b c ,表示区间[a,b]涂为颜色C,w代表白色,b代表黑色,问终于的最长连续白色段,输出起始位置和终止位置

离散化处理。和寻常的离散化不同,须要把点化成线段。左闭右开,即对于一段区间[a。b],转化成区间[a,b+1)

#include "stdio.h"#include "string.h"#include "algorithm"using namespace std;struct node{    int l,r,x;}data[20010];struct Mark{    int l,r,op;}mark[20010];struct B{    int id,x,dir;}b[20010];int color[20010];bool cmp(B a,B b){    return a.x
=r) return ; data[k].l=l; data[k].r=r; data[k].x=0; if (l==r-1) return ; mid=(l+r)/2; build(l,mid,k*2); build(mid,r,k*2+1);}void updata(int l,int r,int k,int op){ int mid; if (l>=r) return ; if (data[k].l==l && data[k].r==r) { data[k].x=op; return ; } if (data[k].x!=-1 && data[k].x!=op) { data[k*2].x=data[k*2+1].x=data[k].x; data[k].x=-1; } mid=(data[k].l+data[k].r)/2; if (r<=mid) updata(l,r,k*2,op); else if (l>=mid) updata(l,r,k*2+1,op); else { updata(l,mid,k*2,op); updata(mid,r,k*2+1,op); }}void query(int k){ int i; if (data[k].l>=data[k].r) return ; if (data[k].x!=-1) { for (i=data[k].l;i
ans) { ans=r-l; ans_l=l; ans_r=r; } } if (ans==0) printf("Oh, my god\n"); else printf("%d %d\n",ans_l,ans_r-1); } return 0;}

转载于:https://www.cnblogs.com/clnchanpin/p/7343922.html

你可能感兴趣的文章
《大数据分析原理与实践》一一第3章 关联分析模型
查看>>
《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程
查看>>
Capybara 2.14.1 发布,Web 应用验收测试框架
查看>>
ExcelJS —— Node 的 Excel 读写扩展模块2
查看>>
《数字短片创作(修订版)》——第一部分 剧本创作 第1章 数字短片创意技法 剧本创作的构思...
查看>>
MIT 学生挑战新泽西索取挖矿程序源代码的要求
查看>>
实践 | 不同行业WMS选型策略及需要注意的一些问题
查看>>
MaxCompute与OSS非结构化数据读写互通(及图像处理实例)
查看>>
【F3简介】一张图看懂FPGA-F3实例
查看>>
bash环境(变量与bash配置文件)
查看>>
Server Hard drive mode
查看>>
smb服务器配置过程遇到错误及解决
查看>>
java杂乱
查看>>
在Linux上安装Python3.6.1
查看>>
[基础]iOS 可视化编程(全系列)
查看>>
我的友情链接
查看>>
LVS之NAT模型配置实验
查看>>
nginx 报错 99: Cannot assign requested address
查看>>
几种流行的AJAX框架:jQuery,Mootools,Dojo,Ext JS的对比
查看>>
Socket-Client通信
查看>>