首页 > 其他分享 >[ARC085F] NRE

[ARC085F] NRE

时间:2023-06-04 21:14:06浏览次数:45  
标签:min 交集 sum NRE ARC085F 区间

[ARC085F] NRE

首先这道题要先将区间按左端点排序。我们先不考虑区间重叠的情况。

令 \(f_i\) 表示前 \(i\) 个区间已经决策好是否选择,而且第 \(i\) 个区间必选的情况下的最小不同数。再令 \(sum_i\) 表示前 \(i\) 个数中 \(1\) 的个数。枚举一个区间 \(j<i\),可以根据区间 \([l_j,r_j],[l_i,r_i]\) 二者是否有交集来进行分类讨论。这里我们记初始的 \(f_0\) 的答案为全 \(0\) 数组与 \(b\) 的不同数。

  • 二者没有交集,那么就是 \(f_i=\min{f_j+(sum_{r_i}-sum_{l_i-1})-[(r_i-l_i+1)-(sum_{r_i}-sum_{l_i-1})]}\),原因是本来 \(1\) 的位置没有贡献,现在有 \(+1\),即前面加的一坨,而本来 \(0\) 的位置贡献是 \(+1\) 的,现在变为 \(0\)。化简一下就是 \(f_i=\min{f_j+2(sum_{r_i}-sum_{l_i-1})-r_i+l_i-1}\)。
  • 二者有交集,那就相当于增加了 \([r_j+1,r_i]\) 这一部分。将上面的式子改为 \(f_i=\min{f_j+2(sum_{r_i}-sum_{r_j})-r_i+r_j}\)。

这样一个 \(O(N^2)\) 暴力就出炉了。


接下来考虑怎么优化它。

它这些区间,第一类没有交集的可以以 \([j,f_j]\) 为一组插入线段树/树状数组中,然后直接一个区间查询。

第二类有交集的可以先提炼出关于 \(j\) 的式子,插入 \([j,f_j-2sum_{r_j}+r_j]\) 即可,同上。

这样复杂度就是 \(O(N\log N)\)。


标签:min,交集,sum,NRE,ARC085F,区间
From: https://www.cnblogs.com/wscqwq/p/17456322.html

相关文章

  • 使用openresty替换线上nginx网关之openresty安装细节
    背景线上跑了多年的一个网关业务,随着部门的拆分,逐渐有了一个痛点。该网关业务主要处理app端请求,app端发起的请求,采用http协议,post方法,content-type采用application/x-www-form-urlencoded,表单中有一个固定的字段,叫功能号,即funcNo=1000100这样,然后表单中其他业务字段就根据funcNo......
  • Unreal5 第三人称射击游戏 角色基础制作2
    接上一篇Unreal5第三人称射击游戏角色基础制作1角色蹲伏效果上面是需要的操作映射,蹲伏实现,首先要开启相应功能,你需要在角色移动组件上面开启可蹲伏蹲伏还有一些其它设置,比如蹲下角色高度,蹲下以后行走的速度中英文截图这里我设置的移动速度,蹲伏时可以走出平台,就为了防止在物体......
  • Provider parse errors: Cannot instantiate cyclic dependency! ApplicationRef ("[E
    异常: 异常的原因:自定义的一个全局异常类,在它的构造器中注入Router路由就抛出这个循环依赖的异常 解决方式:使用injector ......
  • 微前端-micro-app 使用 onresize出现不生效的问题
    onresize:dom0级别,一次只能绑定一个函数,下个函数会将上个函数给覆盖;addEventListener:dom2级别,一次可以绑定多个函数,各个函数不会覆盖;子应用使用onresize不生效,因为onresize是dom0级别的会被父亲和其他给覆盖,所以在子应用中使用addEventListener,不使用dom0级别的函数。......
  • Openresty 学习笔记(二)Nginx Lua 正则表达式相关API
    ngx.re.match语法: captures,err=ngx.re.match(subject,regex,options?,ctx?,res_table?)环境: init_worker_by_lua*,set_by_lua*,rewrite_by_lua*,access_by_lua*,content_by_lua*,header_filter_by_lua*,body_filter_by_lua*,log_by_lua*,ngx.timer.*,balancer......
  • Mobile Web调试工具Weinre
    现在、将来,用移动设备上网越来越成为主流。但对于开发者们来说,移动web的调试一直是个难题,前期可以使用模拟器来协助调试,但到了真机调试阶段就让人非常头痛。而Weinre就是解决这难题的利器。Weinre的本意是WebInspectorRemote,它是一种远程调试工具。功能与Firebug、Webkiti......
  • 记录一次全局异常告警@ExceptionHandler和HandlerExceptionResolver的问题
         最近有同事说之前写的全局异常告警,如果有@Valid的注解,在接入新写的插件告警后,返回信息不打印了。全局异常是基于@ExceptionHandler的全局异常类,主要是ServletMVC的ModelAndView返回的错误信息的捕获。代码如下:   /***@authorxxx*/@RestControlle......
  • Unreal Engine 大象无形学习笔记(第二部分:虚幻引擎浅析)
     Q1.虚幻引擎的Main函数在哪?LaunchWindows.cpp中找到WinMain。Q2.虚幻引擎为什么要引入模块机制?编辑器模式、发布模式要单独配置非常麻烦。工具:UnrealBuildTool包含大模块:Runtime、Development、Editor、Plugin每个模块包含:Public、Private文件夹,.build.cs文件作用......
  • openwrt ping: sendto: Network unreachable解决办法
    root@OpenWrt:/#pingzhihu.comPINGzhihu.com(103.41.167.234):56databytesping:sendto:Networkunreachable这个错误一般是由于网关配置错误导致的通过 route 查看路由表root@OpenWrt:/#routeKernelIProutingtableDestinationGatewayGenm......
  • Unreal Engine 大象无形学习笔记 (第一部分:虚幻C++编程)
    Q1.什么时候继承自UObject类,什么时候声明纯C++类?UObject自带功能:1.垃圾收集:继承自UObject并被标记为UProperty的变量,会被引擎自动进行生命周期管理。2.Referenceupdating引用自动更新3.反射4.序列化:纯C++类也可以手动实现5.Automaticupdatingofdefaultproperty......