八云蓝自动机 Ⅰ

首先我们对于操作 \(1\) 转换,我们给 \(k\) 单独再开一个点 \(a_c\),这样我们就可以把操作 \(1\) 转换成操作 \(2\) 了。

对于区间问题,我们考虑使用莫队进行维护。

我们记录当前 \(a\) 的值,\(pos_i\) 表示原来第 \(i\) 个位置的数现在在哪里,\(rev_i\) 维护现在第 \(i\) 个数原来在哪里,和 \(add_i\) 现在第 \(i\) 个位置上查询了多少次。

首先我们先考虑指针 \(r\) 往右移的情况。

  1. 这个操作是交换

直接交换 \(a_x\) 和 \(a_y\),\(rev_x\) 和 \(rev_y\),\(pos_{rev_x}\) 和 \(pos_{rev_y}\)。

  1. 这个操作是查询

直接给 \(ans\) 加上 \(a_x\),然后 \(add_x\) 加 \(1\) 即可。

然后我们考虑指针 \(l\) 往左移的情况。

  1. 这个操作是交换

我们同样先交换 \(a_x\) 与 \(a_y\),\(rev_{pos_x}\) 和 \(rev_{pos_y}\) 以及 \(pos_x\) 和 \(pos_y\)。

由于这个操作会影响到后面的查询操作,所以这个操作会改变答案。所以在交换后我们需要加上 \((a_{pos_x} - a_{pos_y}) \times (add_{pos_x} - add_{pos_y})\)。

  1. 这个操作是查询

和上面一样,\(ans\) 加上 \(a_{pos_x}\),\(add_x\) 加上 \(1\)。

剩下两种类似,只需改改符号即可。时间复杂度 \(O(n\sqrt n)\)。

最后要注意本题对 \(2^{32}\) 取模。

code

转盘

我们可以先转换问题。

每个点在 \(a_i\) 时间消失,求一个最小的 \(t\) 使得在所有点都消失前访问所有点

然后我们就可以发先我们发现一直向前走一定不会比等一会在向前走更劣。

先破环成链,枚举每一个 \(i \in [n,2 \times n)\)。所以走到一个点 \(j\) 的时间即为 \(t - (i - j)\)。

所以对于所有的 \(j\) 必须满足 \(a_j \le t - (i - j)\)。即 \(\max (T_j - j) + i = t_{min}\)。

所以答案即为 \(\min_{n \le i < 2n} max_{i - n < j \le i} \ a_j - j + i\)。

于是我们令 \(t_i = a_i - i\)。并且让 \(i\) 向前平移 \(n\) 为,得到 \(ans = \min_{1 \le i \le n}(i + max_{i \le j \le 2 \times n} \ a_j) + (n - 1)\)。

实际上就是维护后缀最大值。相同的,对于每一个 \(j\) 我们只需维护这个点作为 \(i\) 的最大后缀中最小的 \(i\)。这个操作我们可以使用单调队列进行维护。

有了修改,我们用一颗线段树来维护单调队列即可。所以复杂度即为 \(O((n + m) \log^2 n)\)。

code

P6528

问题等价于求 \(\sum_{l1 \le i \le r1} \sum_{l2 \le j \le r2} \lfloor \frac{\sum^{\max(i,j)}_{x=\min(i,j)} a_x}{k} \rfloor\)。

首先我们可以通过容斥来把这个问题拆解成若干个形式为 \(\sum_{l \le i \le r}\sum_{l \le j \le r}\lfloor \frac{\sum^{\max(i,j)}_{x=\min(i,j)} a_x}{k} \rfloor\) 的式子。

接下来我们只需要求出那个式子即可。

我们先对 \(a\) 数组求前缀和,为 \(s\)。后面那个式子即为 \(\lfloor \frac{s_i - s_{j - 1}}{k} \rfloor\)。

接下来我们令 \(c_i = \lfloor \frac{s_i}{k} \rfloor,d_i = s_i \mod k\)。

那么后面那个式子就是 \(c_i - c_{i - 1} - [d_j \le d_{i - 1}]\)。

然后我们发现前面的是可以 \(O(n)\) 预处理,\(O(1)\) 查询的。后面的式子把 \(l - 1\) 和 \(r\) 拎出来然后用主席树求一下即可,剩下的套莫队二离的板子就行了。

DS Record的更多相关文章

  1. DNS RR代码和含义

    记录类型 代码 号码 定义的 RFC 描述 功能 A 1 RFC 1035 IP 地址记录 传回一个 32 比特的 IPv4 地址,最常用于映射主机名称到 IP地址,但也用于DNSBL(RFC 110 ...

  2. 给你的SpringBoot做埋点监控--JVM应用度量框架Micrometer

    JVM应用度量框架Micrometer实战 前提 spring-actuator做度量统计收集,使用Prometheus(普罗米修斯)进行数据收集,Grafana(增强ui)进行数据展示,用于监控生成 ...

  3. 3W字干货深入分析基于Micrometer和Prometheus实现度量和监控的方案

    前提 最近线上的项目使用了spring-actuator做度量统计收集,使用Prometheus进行数据收集,Grafana进行数据展示,用于监控生成环境机器的性能指标和业务数据指标.一般,我们叫这样 ...

  4. DNS资源纪录(Resource Record)介绍

          http://dns-learning.twnic.net.tw/bind/intro6.html 类型 SOA NS A AAAA PTR CNAME MX -------------- ...

  5. 架构模式数据源模式之:表数据入口(Table Data Gateway)、行数据入口(Row Data Gateway)、活动记录(Active Record)

    一:表数据入口(Table Data Gateway) 表数据入口提供了用于访问单个表或者视图(也包含了联表查询)的所有SQL,通常一个表一个类.其它代码通过它来实现对数据库的交互.基于这个特点,表数 ...

  6. 域知识深入学习二:建立AD DS域

    2.1 建立AD DS域前的准备工作 先安装一台服务器,然后将其升级(promote)为域控 2.1.1 选择适当的DNS域名 AD DS域名采用DNS的架构与命名方式 2.1.2 准备好一台支持AD ...

  7. Dempster–Shafer theory(D-S证据理论)初探

    1. 证据理论的发展历程 Dempster在1967年的文献<多值映射导致的上下文概率>中提出上.下概率的概念,并在一系列关于上下概率的文献中进行了拓展和应用,其后又在文献<贝叶斯推 ...

  8. salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)

    本篇引用以下三个链接: http://www.tgerm.com/2012/01/recordtype-specific-picklist-values.html?m=1 https://github ...

  9. Track 造成Goldengate abended的那条record

    Email收到了这样的报错: 2016-12-07 02:52:22  WARNING OGG-01004  Aborted grouped transaction on 'MSP.USER_ACTI ...

  10. oracle遇到的锁异常,oralce record is locked by another user

    由于我在前不久的一次项目调试的时候,将一条数据的ID与另一条数据的ID相同了,但不知为什么没有报错,当在页面发现问题时,删除这条数据时就报错了,oralce record is locked by a ...

随机推荐

  1. Alibaba FFI -- 跨语言编程的探索

    ​简介: 跨语言编程时现代程序语言中非常重要的一个方向,也被广泛应用于复杂的设计与实现中. 跨语言编程是现代程序语言中非常重要的一个方向,也被广泛应用于复杂系统的设计与实现中.本文是 GIAC 202 ...

  2. 2018-2-13-win10-uwp-无法附加到CoreCLR

    title author date CreateTime categories win10 uwp 无法附加到CoreCLR lindexi 2018-2-13 17:23:3 +0800 2018- ...

  3. docker容器资源配额

    1.docker 容器控制CPU docker通过cgroup来控制容器使用的资源限制,可以对docker限制的资源包括cpu.内存.磁盘 1.1 指定docker容器可以使用的cpu份额 # 查看配 ...

  4. LVGL 定时器

    LVGL 8.0 以后好像取消了自定义任务模块,想要使用多线程只能使用系统的线程. 一.定时器结构体 typedef struct _lv_timer_t { uint32_t period; // ...

  5. 开源相机管理库Aravis例程学习(六)——camera-features

    目录 简介 例程代码 函数说明 arv_camera_get_integer arv_camera_get_string 简介 本文针对官方例程中的:04-camera-features做简单的讲解. ...

  6. C++ lambda的重载

    先说结论,lambda是不能重载的(至少到c++23依旧如此,以后会怎么样没人知道).而且即使代码完全一样的两个lambda也会有完全不同的类型. 但虽然不能直接实现lambda重载,我们有办法去模拟 ...

  7. link标签的media属性

    media属性表示被链接的文档将显示在什么设备上.比如下面的例子: <head> <link rel="stylesheet" type="text/c ...

  8. WEB服务与NGINX(17)- https协议及使用nginx实现https功能

    目录 1. https协议及使用nginx实现https功能 1.1 https协议概述 1.2 TLS/SSL协议原理 1.3 https的实现原理 1.4 使用openssl申请证书 1.5 ng ...

  9. 前端使用 Konva 实现可视化设计器(11)- 对齐效果

    这一章补充一个效果,在多选的情况下,对目标进行对齐.基于多选整体区域对齐的基础上,还支持基于其中一个节点进行对齐. 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 I ...

  10. containerd 源码分析:kubelet 和 containerd 交互

    0. 前言 Kubernetes:kubelet 源码分析之创建 pod 流程 介绍了 kubelet 创建 pod 的流程,其中介绍了 kubelet 调用 runtime cri 接口创建 pod ...