• 安利一下近期做的几道线段树入门题


    写了几道线段树入门题以后的我感觉会了点东西~

    放几道有代表性的。

    P.S.洛谷的题号

    P3372模板

    这个不用说了。

    P1558色板游戏

    状压,区间或,裸题。

    P2471降雨量

    思路不难,细节很多。

    P2572序列操作

    题意

    长度为n的01序列,m次操作

    0 a b 把[a, b]区间内的所有数全变成0

    1 a b 把[a, b]区间内的所有数全变成1

    2 a b 把[a,b]区间内的所有数全部取反,也就是说把所有的0变成1,把所有的1变成0

    3 a b 询问[a, b]区间内总共有多少个1

    4 a b 询问[a, b]区间内最多有多少个连续的1

    n,m<=100 000

    细节更多,更麻烦,对于每个节点要维护好多值好多特判。

    这个题的sign传递十分巧妙。

    解法

    首先 如果只有操作 0,1,3 这就没什么技术含量了

    每个节点的sign,-1,0,1,2,代表这个区间里的状态,如果修改是 2 就可以  抵消掉当前的sign2 ,或者把sign1变0,0变1

    然后每个点存一个 sum,sumr0,sumr1,suml0,suml1,max0,max1,在询问时,根据相应的sign 可以 导出答案

    P2824排序

    题意:给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序,排序分为两种:1:(0,l,r)表示将区间[l,r]的数字升序排序2:(1,l,r)表示将区间[l,r]的数字降序排序最后询问第q位置上的数字。 n,m <= 30 000

    十分有趣的一道题。

    看题解用二分+线段树check 写我也是惊了,思路奇特。

    解法

    二分答案,然后把大于等于答案的数赋成1,其余的赋成0,

    每次排序就等同于把1堆在一边,0堆在一边,这个能够拿线段树实现

    排序完就可以得到答案和当前二分到的答案的大小关系了->那么继续二分

    P3415祭坛

    题超有意思! 可是好简单 =、= 

    坐标离散化。

    持续更新中。。。

  • 相关阅读:
    jQuery 自执行函数
    IRelationalOperator空间关系接口简介
    9.2 空间拓扑运算[转]
    解决关于ArcGIS10.2服务手动启动的问题
    Multipart to single part feature
    Multipart polyline to single part lines
    VS2015 C#6.0 中的没有实现/支持的特性
    VS2015 C#6.0 中的那些新特性
    ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析 转载
    FME2010 案例分析: 动态批量转换
  • 原文地址:https://www.cnblogs.com/Elfish/p/8016182.html
Copyright © 2020-2023  润新知