P7603 [THUPC2021] 鬼街(减半警报器模板

前言

这是一个由 lxl 大佬提出的神奇 trick,第一次省选集训的时候有点颓,听完了没写。刚好明天又要讲这个不如写篇题解。

还是,我太弱了;所以又是研究一晚上才写出来,所以还是吧我对这道题的理解讲讲。

正文

何为折半报警器

按照 lxl 的 ppt 上的话来说是这样的:

这种题目一般是你需要维护一个数据结构,初始给定了一些范围,每个范围有权值。每次把包含一个点的所有范围都减去 \(x\)。你需要维护每个范围被减到 \(<0\) 的最早时刻。

图一:

图二:

具象一点说,当每个检测的区间是由多个独立子区间构成,多个区间可能用到相同的子区间,我们就有可能用到他。

多个独立子区间构成就如图一,我们可以不重不漏的吧一个区间分成多个子区间。

个区间可能用到相同的子区间,也就是说我们存子区间的时候可以讲重复子区间可以同时存在一起,如果按照图像来说就可以相当于(图二)把子区间平移。

由于线段的值是子区间的和,呢么一定有至少一个子区间是大于 \(\frac{Sum}{Size}\) 的,如果有一个子区间被将为 \(0\) 一下,我们就将线段重新平分。

整体而言并不是讲所有区间实时更新,而是在子区间被将为 \(0\) 时再对改线段重新同步。

本题如何实现

读完题目会发现,这道题就符合了所说的“当每个检测的区间是由多个独立子区间构成,多个区间可能用到相同的子区间”。我们可以吧每个质因子作为一个子区间维护。

具体而言,我们首先为了将数质因数分解,需要先筛出素数。

后对于增加报警器的操作,因为报警器只能检测安放后的次数,又为了不影响前面的子区间,我们考虑改变本段。考虑将本段的子段的累计先赋值成当前已经记录的数量,再把目标加上这个值,我们就优雅的记录了这个数。而在区间求和的时候就可以得到一种优雅的写法。

对于每次同步我们可以用如下代码。

val[k] -= sum[k] - tmp[k] , tmp[k] = sum[k]

即每次把还未同步的部分加到总和里,再同步数量。

对于每一次闹鬼,就是把输入数的所有质因子(也就是一个子区间)减去上权值,如果这时此区间将为 \(0\) 及以下,则就可能得到答案,或者需要重新分配子区间的值。

当然这里不用全部枚举,我们可以用个 ds 维护一下使要求的数量从小到大排序,当出现不成立时后面的一定不成立就可以退出了。

赋值时有一个细节,我们可以直接赋值上取整。

证明:

设:一个数 \(x\) 有 \(k\) 个质因子权值为 \(sum\)。

若 \(x \mid k\),

每个质因子权值为 $ \frac {sum} {k}$,

根据鸽笼原理,最小的最大值为 \(\frac {sum} {k}\) 符合。

若 \(x \nmid k\),

每个质因子权值最大为 \(\frac {sum} {k + 1}\),

根据鸽笼原理,最小的最大值为 \(\frac {sum} {k + 1}\) 符合。

另外不要忘了“真实的 \(y = y' \bigoplus LastAns\)”。

这样你就可以把这道题切掉了。

Code

本质和第一篇题解没有区别,但是传送门[Link]。

P7603 [THUPC2021] 鬼街(减半警报器模板)的更多相关文章

  1. PUA

    约会技巧 kino技巧 被拒绝的应对方法 (1)一般约会7个小时后,就能带女生回家 (2)点菜时多点一点,以回家放菜为名 (3)理由要文雅 (4)开酒店的理由 第一时间触碰测试 (1)第一次约会要第一 ...

  2. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  3. 使用javaMail和velocity来发送模板邮件

    之前在ssh项目中有用过javaMail和velocity来发送邮件,实现的效果如下所示. 这类邮件主要用于公司的推广宣传,比如商城的促销等场景. 今天打算将邮件模块也集成到ssm项目,也算是对之前做 ...

  4. THUWC逛街记

    1/28 这次打算去THUWC划个水,就定了1/29中午的飞机.同校有几个同学去PKUWC,求稳搭今天的飞机.中午时候听说今天飞长沙的飞机全都取消了,明天有没有也不好说( 事实证明29号有飞机:( ) ...

  5. windows&lunix下node.js实现模板化生成word文件

    最近在做了一个小程序!里面有个功能就是根据用户提交的数据,自动生成一份word文档返回给用户.我也是第一次做这功能,大概思路就是先自己弄一份word模板,后台接受小程序发过来的数据,再根据这些数据将相 ...

  6. 常用oracle可重复执行的脚本模板

    为保证脚本的可重复执行以及丢失,涉及到数据库环境的移植等,就会使用可重复执行脚本,此处仅提供相关一些模板 说明下:该脚本需要在命令窗口执行,而不是在SQL窗口执行 创建序的脚本 /** * 作者:zk ...

  7. scrapy系列(二)——startproject、genspider创建项目与模板使用

    阅读本文之前需要安装scrapy,如果你还没有安装该框架,那么可以看之前一篇文章scrapy1.2windows安装. 现在默认大家都已经成功的安装了scrapy可以开始大展身手了.本文主要讲的是新建 ...

  8. 算法模板学习专栏之总览(会慢慢陆续更新ing)

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/7495310.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  9. HDU 1512 Monkey King(左偏树模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1512 题意: 有n只猴子,每只猴子一开始有个力量值,并且互相不认识,现有每次有两只猴子要决斗,如果认识,就不打了 ...

  10. IDEA类和方法注释模板设置

    在开发中使用idea的注释总结:由于IDEA自带的注释模板不是太好用,所以整理一下适用于自己的模板: 一.首先我们来设置IDEA中类的模板:(IDEA中在创建类时会自动给添加注释) 1.File--& ...

随机推荐

  1. vim的visual模式和列编辑

    有三种方式进入visual模式: 1> 在普通模式下输入v(小写),底部提示信息为VISUAL,编辑粒度为字符 通过方向键或者HJKL调整选择的字符范围. 输入d,删除选中字符: 输入y,复制当 ...

  2. CH573 CH582 CH579蓝牙从机(peripheral)例程讲解二(广播内容修改)

    在上一篇外设例程讲解中讲述了蓝牙从机的收发接口,这样可以快速的上手,那么接下来就讲解另一个重要设置,从机的广播. 在peripheral例程中,一直是以50ms的周期进行广播,使用手机软件扫描可以获取 ...

  3. Java 面试手撕代码

    1. 判断括号有效性 public static boolean fun5(String str) { HashMap<Character, Character> hashMap = ne ...

  4. windows下 mstsc 远程Ubuntu 图形界面

    安装及设置xrdp ------------------------------------------------------ touch ~/installXrdp.sh  cat > ~/ ...

  5. Thingsboard3.2.2本地部署

    Thingboard3.2.2本地安装编译详细教程!!! 一:拉取源码. 创建一个空的文件夹 在此处使用git拉取源码. git clone https://github.com/thingsboar ...

  6. 在wxpython框架写的GUI中调用GIF格式图片,显示在指定行列的方法

    #首先需要从 wx.adv 模块导入 Animation, AnimationCtrl方法 from wx.adv import Animation, AnimationCtrl #然后在面板实现过程 ...

  7. Django笔记三之使用model对数据库进行增删改查

    本篇笔记目录索引如下: model 准备 增 查 删 改 1.model 准备 在上一篇笔记中,我们新建了一个 application,增加了几个model 同步到了数据库,这次我们新建一个名为 bl ...

  8. MyBatisPlus-------id生成策略

    不同的表对应不同的id生成策略 日志:自增 购物订单:特殊规则(FQ23324AK443) 外卖单:关联地区日期等信息( 10 04 20200314 34 91) 关系表:可省略id ....... ...

  9. SpringBoot——数据访问

    对于数据访问层,无论是 SQL 还是 NoSQL,SpringBoot 默认采用整合 Spring Data 的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入各种 xxxTemplate,x ...

  10. Netty 线程模型(Reactor 线程模型)

    更多内容,前往个人博客 当说到 Netty 线程模型的时候,一般首先会想到经典的 Reactor 线程模型,尽管不同的 NIO 框架对于 Reactor 模式的实现存在差异,但本质上还是遵循了 Rea ...