• 「总结」区间/序列题型总结


    孔乙几显出极高兴的样子,将一个鼠标敲着电脑桌,点头说,“对呀对呀,序列题有四百样出法,你知道么?”

    最近序列题考得有点频繁,于是出来总结一下。

    (不过部分区间题目我已经忘了啊QAQ,只能拣一些稍微简单的写。还是我太蒻了啊QAQ)

    学数数(出处:NOIP模拟测试29(B) B题

    题目大意:n个数组成一个序列,记录n*(n+1)/2个序列中的最大值构成一个新的序列,在这个序列中进行三种操作:1.查询比k大的值的个数 2.查询比k小的值的个数 3.查询等于k的个数

    正解:单调栈扫,统计每一个数作为区间最大值的区间数,然后开桶维护前缀和查询。

    english(出处:NOIP模拟测试31 C题

    题目大意:对于整体区间计算两个答案:

    1.$ans_1=sumlimits_{l=1}^{n}sumlimits_{r=l}^{n}(a_l xor a_r)*max(a_i|lleqslant i leqslant r)$
    2.$ans_2=sumlimits_{l=1}^{n}sumlimits_{r=1}^{n}[(a_1 xor a_r) > max(a_i|1leqslant i leqslant r)]*max(a_i|lleqslant i leqslant r)$

    正解:单调栈预处理出对于每一个$a_i$左侧第一个大于它的数字的位置$l_i$和右侧第一个大于它的数字的位置$r_i$。

    对于$ans_1$,维护每一位二进制下1的个数的前缀和,对于每一个i,查询左侧0的个数和右侧1的个数相乘再左移相应的位数,然后查询左侧1的个数和右侧0的个数相乘再左移相应的位数,相加累加答案。

    对于$ans_2$,解法一(我没打):维护一个可持久化01trie,记录好过每一个点的数字个数,对于每个点所控制的区间进行查询。解法二(向lockey大神学习):莫队优化01trie的建立和删除过程。

    计划(出处:NOIP模拟测试35 B题

    斯诺(出处:NOIP模拟测试38 B题

  • 相关阅读:
    第1章 1.4计算机网络概述--数据包和数据帧
    第1章 1.3计算机网络概述--规划IP地址介绍MAC地址
    sql生成随机字符串
    bootstrap手风琴效果
    C#-java RSA加密解密
    正则表达式验证手机号 身份证号 银行卡号 姓名输入
    微服务在微信后台的架构实践
    react学习
    datatables .fnDraw is not a function
    给当前页或者跳转后页面的导航栏添加选中样式
  • 原文地址:https://www.cnblogs.com/xingmi-weiyouni/p/11479719.html
Copyright © 2020-2023  润新知