首页 > 其他分享 >Field Should Not Be Empty

Field Should Not Be Empty

时间:2023-12-26 19:11:21浏览次数:31  
标签:发现 前缀 个数 位置 交换 Should Field 不难 Empty

题目传送门

一种比较暴力的做法,不需要观察任何性质。

思路

首先特判一下 \(\forall i,p_i=i\) 的情况,输出 \(n-2\),不难发现剩下的情况必定需要交换两个数。

首先考虑设 \(a_i\) 表示 \(i\) 左边比 \(p_i\) 大的数的个数与 \(i\) 右边比 \(p_i\) 小的数的个数之和,\(a\) 数组可以用树状数组简单求出。

我们发现此时的 \(f(p)\) 值即为满足 \(a_i=0\) 的 \(i\) 的个数。

考虑若交换 \(i,j\),此时的 \(a\) 数组会如何变化。

设 \(A=p_i,B=p_j\),不难发现交换仅会在 \(A>B\) 时发生,且此时受到影响的位置必然 \(\in [i,j]\)。

我们先不考虑 \(a_i\) 和 \(a_j\) 的变化,只考虑 \((i,j)\) 内的数。

首先计算交换 \(A,B\) 后对每个位置左边比它大的数的个数的影响,不难发现会令 \(p_k \in (B,A)\) 的所有 \(a_k\) 减一。

然后计算交换 \(A,B\) 后对每个位置右边比它小的数的个数的影响,不难发现会令 \(p_k \in (B,A)\) 的所有 \(a_k\) 减一。

所以我们操作 \(i,j\) 对所有区间 \((i,j)\) 内的数的影响是令所有满足 \(p_k \in (p_j,p_i)\) 的 \(a_k\) 减二。

接着特殊处理一下端点的贡献,不难发现 \(p_i\) 想要满足条件必须得从位置 \(i\) 被交换到位置 \(p_i\),这些位置一共只有 \(n\) 种,扫到的时候判一下就行了。

接下来我们继续尝试转化原问题。

不难发现,我们操作的 \(i,j\) 一定满足 \(p_i\) 是前缀最大值,\(p_j\) 是后缀最小值。

那么考虑扫描线,由于 \(p_i\) 递增,所以我们每次把上一个前缀最大值到当前前缀最大值之间的所有数扫入线段树内,同时每次把不满足条件的数踢出。此时已经消去了一维,由于每个数只会被加入一次,当某个数被加入的时候我们二分一下它可以对哪些后缀最小值产生贡献,然后在线段树上区间加就行了。

至此,本题成功被解决,时间复杂度 \(\mathcal O(n \log n)\)。

代码

提交记录

标签:发现,前缀,个数,位置,交换,Should,Field,不难,Empty
From: https://www.cnblogs.com/tx-lcy/p/17929115.html

相关文章

  • clearValidate()和resetFields()表单校验的用法和区别
    目标:实现表单重置和清除验证1.整个表单的校验移除<Formref="form"rule={this.rules}><FormItemprop="name"label="姓名"><Input/></FormItem><FormItemprop="age"label="年龄"><Input/></For......
  • 初中英语优秀范文100篇-038Should Students Make Firiends Online?学生应该在线交友吗
    PDF格式公众号回复关键字:SHCZFW038记忆树1Nowadays,manyteenagersshowagreatinterestinmakingfriendsonline.翻译现如今,许多青少年对于在网上交朋友表现出很大的兴趣。简化记忆兴趣句子结构1"Nowadays"是一个副词,表示这个句子描述的是现在的情景。2"man......
  • lightdb empty_clob/empty_blob 函数兼容性升级
    背景在Oracle中,长度为0的字符串被视为NULL.下文中长度为0的字符串被称为EMPTY_STRING.而PostgreSQL能够区别对待EMPTY_STRING和NULL.为了兼容Oracle的行为,在LightDB23.4版本前,已经基本将EMPTY_STRING当成了NULL.如,以下sql,select''::textisnull;......
  • 强化学习算法真的适合于你的应用吗 —— 强化学习研究方向(研究领域)现有的不足(短板、
    外文原文:WhyYou(Probably)Shouldn’tUseReinforcementLearning地址:https://towardsdatascience.com/why-you-shouldnt-use-reinforcement-learning-163bae193da8中文翻译版本(ChatGPT3.5翻译:)有关这项技术存在很大的炒作,而且理由充分,因为这可能是实现通用人工智能的......
  • MapStruct+Maven+Lombok问题NoSuchBeanDefinitionException、does not have an access
    概述先直接说我遇到的问题吧,SpringBoot应用启动失败:ERROR|org.springframework.boot.web.embedded.tomcat.TomcatStarter|onStartup|61|-ErrorstartingTomcatcontext.Exception:org.springframework.beans.factory.UnsatisfiedDependencyException.Message:Error......
  • mysql报错:Duplicate entry ‘...‘ for key ‘field‘
    错误信息"Duplicateentry'...'forkey'field'"表示在数据库表中,你正在尝试插入一条数据的'number'字段的值已经存在。这通常是由于你设置了'field'字段为唯一键(UNIQUEKEY),而你又尝试插入一个已存在的值。解决这个问题的方法有以下几种:检查输入的数据:确保你插入的数据在该字段......
  • vue3 + vant4 :form表单中,搭配 Popup 和 Field 实现vant-picker组件,设置默认值及默认选
    环境:vue3,vant4背景:Picker作为用于辅助表单填写,搭配Popup和Field。页面需要给picker设置默认值,city为温州,但是在popup弹出时,picker没有选中温州这个选项,还时停留在杭州。解决方案:看了很多解决方案,设置default-indexset,ColumnIndex。都尝试了,还是不行。而且这些方法,其实在v......
  • mybatisPlus注解fill = FieldFill.UPDATE和updateStrategy = FieldStrategy.IGNORED的
    由于当时使用mybatisPlus的updateById更新数据,习惯性的认为字段为null的不更新。但是上线后,出问题了。只更新状态字段,其他的一些属性竟然被置空了。赶紧排查,发现实体类中这些字段有fill=FieldFill.UPDATE,导致更新的时候如果这个字段为null也会更新为null。 同样作用的还有@T......
  • Should be the workers need to dress uniform for work?
    Theneedforworkerstodressinuniformsforworkdependsonthespecificindustry,company,andjobrole.Insomecases,uniformsmayberequiredforsafetyreasons,topromoteaprofessionalimage,ortomaintainaconsistentbrandidentity.However,i......
  • SNP Bluefield助力日日顺物流公司进行IT系统代码拆分
         日日顺是海尔集团旗下综合服务品牌,旗下有日日顺物流、日日顺乐家、日日顺乐农等。日日顺物流为家电、家具、卫浴等品类的厂商、线下零售商和电子商务客户提物流服务。日日顺网点遍布全国,深入县、乡、村级地区,日日顺的优势在于大件配送。2018年,日日顺品牌价值301.08......