内容提要

有关数据结构的例题


求逆序对数

统计每个数前面有多少比他大的数

开数组表示这个数之前0~9这些数出现了几次

动态将某个点加一,动态求前缀和

用树状数组

如果数太大了怎么办?

离散化

步骤:先把原数组排序,然后unique去重,之后按原数组lower_bound查找

Stars

由于我们是按照y的升序处理这个星星的,所以在处理的时候只需要处理x<=当前给定的x的个数就好了,用前缀和搞一搞,也是树状数组

二维偏序

一维排序

一维树状数组

Queries

直接开m个树状数组,每个树状数组中都是0/1的,每个位置a[i]表示a[i]这个数%m是否=0,是就是1,不是就是0

第i个树状数组的第j个下标表示a[i]%m是否=i

查询的时候只需要在第mod个数组查询[l,r]的前缀和就可以了

加减的操作就在原来的基础上搞一搞就行了

营业额统计

  1. set做法
  2. 线段树

我们维护0~9每个数当前的次数,某一个数前面的最大值和后面的最小值再与这个数做差,最小的就是波动值

维护一个线段树,每次求一个区间的最大值,一个区间的最小值

权值线段树,他的下标不是数组的下标,而是权值的下标

维护序列

维护两个标记

Sasha and array

考虑矩阵乘法

F为矩阵

实际上就是求[l,r]的ΣF[ai]然后乘[1 1]矩阵

区间加法其实就是对矩阵进行区间乘法

于是就变成了区间乘法,区间求和

花神游历各国

每次开根号单点修改去开,longlong范围内最多开6次就会全变成1或0

直到某个区间全部变成1或0就把他打上标记

中位数之和

每插入一个数,他的中位数之和都会发生改变

S[s1,s2,s3,s4,s0]分别表示集合中%5余1,2,3,4,0的数的和

建一棵权值线段树,以a[i]为下标,每一个节点表示在原先的大小在[l,r]中的数在长度为5的数组中长什么样子,以及大小在[l,r]中出现了多少数

大小为k的在合并时需要向后滚动k个再相加

修改:只需要单点修改

先将要处理的数字离散化。

按数字的顺序为下标建立一颗线段树。

线段树的每个节点维护如下几个值:

这一段闭区间中有几个数字

a[0..4]表示下标模5余某的数值之和

单点修改,区间查询即可完成操作。

Rmq problem

Mex表示[l,r]没有出现的最小非负整数

常在博弈论中求sg函数

离线做

扫一遍可以得到以1为左端点的mex值

每次将l右移1,更新r的值

当拿走一个数时,如果这个数只有一个,那么所有大于他的mex都会变成这个数

区间修改取min

对于所有的r,单点查询,标记下放

单次询问log(n)

只有查询没有修改

等差子序列

实质上是求是否存在三元组(i,j,k),满足i<j<k且Ak-Aj=Aj-Ai

如果一个数出现过,就让对应位置变成1,否则为0

枚举等差中项,我们看看是否对称,如果对称就意味着都在这个数之前或者之后出现,也就是说不可能以这个数作为等差中项

  1. 单点修改
  2. 比较两段区间是否相同(等于比较两个字符串是否相同)

每个节点表示这个节点的hash值,单点修改,比较hash值

qbzt day3 下午(好难)的更多相关文章

  1. QBZT Day3(zhx ak IOI)

    动态规划 DP和前几天学的东西不大一样,动态规划和数据结构相比是一个非常抽象的东西 先来看看斐波那契数列 定义是F0=0,F1=1,Fn=F(n-1)+F(n-2) 0,1,1,2,3,5,8,13, ...

  2. qbzt day6 下午 模拟赛

    我太菜了 T2 给定一张有向图,每个点有点权.试找到一条路径,使得该路径上的点权最 大值减去点权最小值最大,问这个差最大是多少.   话说这个题第一个想到的思路是tarjan缩点+拓扑排序来着... ...

  3. Day3下午解题报告

    预计分数:20+40+30=90 实际分数:40+90+60=190 再次人品爆发&&手感爆发&&智商爆发 谁能告诉我为什么T1数据这么水.. 谁能告诉我为什么T2数据 ...

  4. qbzt day5 下午

    农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的奶牛们享 ...

  5. qbzt day4 下午

    有向图的强连通分量 强联通:两个点之间可以互相到达 如果某个图任意两个点都是强联通的,那么称这个图强联通 如果一个图的子图是强联通的,那么称这个图是强联通子图 一个图的极大强联通子图被称作强连通分量 ...

  6. qbzt day3 晚上 平衡树的一些思想

    pks大佬的blog 二叉查找树 任何一个节点左子树的所有元素都小于这个节点,右子树的所有元素都大于这个节点 查找一个节点:从根节点开始,比他小就向左走,比他大就向右走 平衡树:解决二叉查找树的一些痛 ...

  7. qbzt day3 上午

    内容提要 堆 lca(最近公共祖先) st表 hash 并查集 树状数组 线段树 数据结构 1.堆 Priority_queue 他滋兹:插入删除查询最大值(最小值) 分为大根堆小根堆 2.LCA 首 ...

  8. qbzt day2 下午

    内容提要 高精 矩阵 筛法 先是高精除法 注意细节 高精度开方:神奇的竖式 以小数点为分界线,每两个位砍一刀 87654.321-->08|76|54|.32|1 大概就是先对第一位开方,然后相 ...

  9. PKUWC 2019 自闭记

    PKUWC 2019 自闭记 Day -1 考前天天在隔壁的物竞教室划水(雀魂,能和吉老师一起玩的游戏都是好游戏),没有做题. Day 0 早上8:16的高铁,到广州南居然要6个小时...不知道福州和 ...

随机推荐

  1. 分布式均匀算法--hash性一致算法--hash slot(转)

    目录 1.redis cluster介绍 2.最老土的hash算法和弊端(大量缓存重建) 3.一致性hash算法(自动缓存迁移)+虚拟节点(自动负载均衡) 不用遍历    -->   hash算 ...

  2. MATLAB图像的代数运算

    1.图像旋转与缩放 bm=imread("3.png"); %subplot(1,3,1); imshow(bm); %缩放图片 %bt=imresize(bm,0.5,'near ...

  3. vuex辅助函数和vuex5个属性

    在上篇中,我们可以知道如果想要访问vuex.store中state中的数据,需要this.$store.state.属性名.显然这样访问数据写的代码很很不简洁的,辅助函数就是用来解决这个问题的. 1. ...

  4. 配置ssh免密码登录设置后还是提示需要输入密码

    工作之余搭建了一个集群测试,配置了ssh免密码登录以后  ,所有的ssh-copy-id 密钥也都分发了 ,各项配置也没有问题,但是使用ssh进行免密登录时,没有报错,但是要输入被ssh主机的登录密码 ...

  5. js防抖和节流优化浏览器滚动条滚动到最下面时加载更多数据

    防抖和节流,主要是用来防止过于平凡的执行某个操作,如浏览器窗口变化执行某个操作,监听某个input输入框keyup变化,瀑布流布局时Y轴滚动,图片加载. js函数的防抖 经过一段事件才执行某个操作,如 ...

  6. 基于Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls流媒体服务器(二)

    前言 Nginx-rtmp-module插件针对RTMP协议中一些命令,实现了事件通知和exec外部脚本处理.这里我通过一个简单的SpringBoot项目和Python代码,快速搭建一个HTTP服务来 ...

  7. PAT Basic 1037 在霍格沃茨找零钱 (20 分)

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...

  8. P4513 最大连续字段和 (线段树+区间合并)

    题目链接:https://www.luogu.org/problem/P4513 题目大意:单点修改和求区间最大连续字段和 解题思路:很容易想到是用线段树来做,但是如何进行维护呢? 每个维护区间 [L ...

  9. 1134. Vertex Cover (25)

    A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at le ...

  10. php内置函数分析range()

    PHP_FUNCTION(range) { zval *zlow, *zhigh, *zstep = NULL, tmp; , is_step_double = ; double step = 1.0 ...