首页 > 其他分享 >cf1805-post

cf1805-post

时间:2024-02-28 13:55:42浏览次数:19  
标签:le log cf1805 ge Theta post 维护 sim

CF1805

D

我直接猜测,设某条直径端点为 \(u,v\),对于一个 \(k\) 只需要合并 \(u\) 和距离 \(\ge k\) 的点,\(v\) 和距离 \(\ge k\) 的点即可。

证明,首先 \(k\le\) 直径长度,否则答案为 \(n\)。

这样 \(u,v\) 在一个连通块内,设这个连通块为 \(T\)。试图证明,一个点要么在 \(T\) 内要么自己独立一个连通块。

考虑若存在 \(x,y\) 不同时在 \(T\) 内,满足 \(dis(x,y)\ge k\),则有 \(x\) 到 \(u,v\) 其一的 \(dis\) 也 \(\ge k\),\(y\) 到 \(u,v\) 其一的 \(dis\) 也 \(\ge k\)(直径的性质)。此时 \(x,y\) 都在 \(T\) 内,矛盾。

从大到小处理 \(k\),复杂度 \(\Theta(n)\)。

E

典题啊,以后看到一定要想起来啊。考虑某种颜色的全局出现次数:

  • 如果为 \(1\),则不对任何边有贡献。

  • 如果为 \(2\),则只对路径上的边有贡献。

  • 如果为 \(3\),则对所有边有贡献。

离线处理路径取 \(\max\) 即可,复杂度 \(\Theta(n\log n)\)。

F

easy version 是 \(n\le 3000\)。

这部分有一个显然的暴力,对 \(a\) 排序,维护每一层得到的序列,每次可以优先队列 \(\Theta(n\log n)\) 求下一层。

有一个问题,这样每过一层值域翻倍,到后面就维护不了了。

观察发现每一层的极差不升,因为第一项必定是 \(a_1+a_2\),最后一项小于等于 \(a_1+a_k\),\(k\) 是上一层长度。

那我们可以每次求完令 \(a_i\gets a_i-a_1\),令答案加上这个最小值对之后的影响,即 \(a_12^{n-c}\),\(c\) 是轮数。

这样就可以 \(\Theta(n^2\log n)\) 通过 easy version。

考虑 \(n\le2\times10^5\)。注意到我们只希望求最后的 \(a_1\),不一定要维护整个序列。

设阈值 \(B\),试图只维护序列的 \(a_1\sim a_B\) 项。(操作后 \(a_1=0\))

发现若 \(a_2+a_3\le a_B\),\(a_{B+1}\) 之后的数不可能出现在新的 \(a'_{1\sim B}\) 中,因为已经存在一个填满 \(a'_{1\sim B}\) 的方案:

  • \(a'_{1}=a_1+a_2,a'_{2}=a_1+a_3,\dots,a'_{B-1}=a_1+a_B,a'_B=a_2+a_3\)

(可能要再排序)

且任何包含 \(a_{B+1}\) 之后的数的方案都不如当前这个方案,因为它们都大于等于此方案中的最大值 \(a_1+a_B\)。

因此可以只用 \(a_{1\sim B}\) 中的数求得新的 \(a'_{1\sim B}\),满足我们的需求。

如果 \(a_2+a_3>a_B\) 呢?

由于每次操作完要减去最小值,直觉上操作后最大值会减半。具体而言:

我们进行两次求解,发现每次求解会导致最后一个数可能包含 \(a_{B+1}\) 之后的数,前面位置都可以只依靠 \(a_{1\sim B}\) 求出。

我们直接这样的每次求解舍弃维护新的 \(a'_B\),并令 \(B\gets B-1\)。

严谨地,操作一次后的序列 \(a'\) 的最大值 \(a'_{B-1}\) 小于等于 \(a_B\)。进行减去最小值的操作后小于等于 \(a_B-a_2\)。

操作两次后的序列 \(a''\) 的最大值 \(a''_{B-2}\le a'_{B-1}\le a_B-a_2\)。

进行减去最小值的操作后 \(\le a_B-a_2-(a_3-a_2)=a_B-a_3<\frac12a_B\)。

这说明第二种情况不会出现超过 \(\log V\) 次,每次需要舍弃维护 \(2\) 个末尾的数。

即,直接令 \(B=2\log n+1\) 即可保证最后能维护到 \(a_1\)。

复杂度 \(\Theta(nB\log B)=\Theta(n\log V\log\log V)\)。

标签:le,log,cf1805,ge,Theta,post,维护,sim
From: https://www.cnblogs.com/iorit/p/18040137

相关文章

  • 解决uniapp项目中使用vant Weapp图标组件报错问题(Module build failed from ./node_mo
    解决uniapp项目中使用vantWeapp图标组件报错问题(Modulebuildfailedfrom./node_modules/postcss-loader/src/index):https://blog.csdn.net/it_cgq/article/details/111991644?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170909210216800225582870%2522%252C%252......
  • 查询postman版本号
    首先打开postman  ......
  • postman 设置全局变量
    目的:如下图,需要把接口返回的data字段内容在下一个接口引用。代码:varjsondate=pm.response.json();//拿到接口返回的全部内容vardata=jsondate.data;//把接口返回内容中需要提取的值赋值给一个参数console.log(data);//可以通过输出到控制台查看是否提取成功;pm......
  • psql: 无法联接到服务器: 没有那个文件或目录 服务器是否在本地运行并且在 Unix 域套
    今天在服务器上用root用户输入pgsql和pg_dump报错如下 首先检查了下pg的状态发现正常systemctlstatuspostgresql 然后尝试输入pg_dump-h127.0.0.1psql-h127.0.0.1不再报错 添加了-h127.0.0.1原因未知,待解决...... 第二次尝试添加了环境变量vim /et......
  • DBeaver 配置postgresSQL离线驱动(全)ps:其他数据库同理
    原文地址:https://blog.csdn.net/wulala517/article/details/1305831931.首先在一台可联网的机器上打开db,在这儿获取驱动作为离线驱动包。依次点击数据库-驱动管理器;搜索框输入你需要修改离线驱动的数据库,我是pg库,以下以pg库为例,输入postgres,左键单击postgresSQL,后点击编辑; 2.......
  • SpringMVC系列之(五)POST请求中文乱码
    POST请求中文乱码1.配置解决中文乱码的过滤器web.xml中增加如下代码<filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><para......
  • post-2023-hang-dian-duo-xiao-ji-lu
    \(\textbf{2023—2024赛季记录}\)Round3第一次打HDU多校。队友是pjy和lxy。比赛开始时发生了一些小事故,pjy被骗到学校去了,导致半个小时没联系上,一开始用的是team305,后面换成了team306。开局先切了个签到题1005,然后pjy过了1011,lxy过了1004。由于晚了快半个......
  • 支持快速生成API文档: Apipost
    API管理的难点在哪?相信无论是前端,还是后端的测试和开发人员,都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致,导致协作低效、频繁出问题,开发测试人员痛苦不堪。开发人员在Swagger定义好文档后,接口调试的时候还需要去Postman再定义一遍。......
  • 达梦、Oracle、Mysql和PostgreSQL数据库重要参数对比
    前言数据库在安装完成之后通常都会配置一些基础的参数用于控制和管理数据库行为,其中有些参数在配置完成后若要修改则需要重启数据库才能生效,甚至一些参数在完成初始化之后无法修改,这些参数在生产环境中尤其需要关注,需要事先就确定好,避免后续遇到需要修改时影响到生产环境的使用。......
  • Apipost 数据模型功能API数据重复利用起来
    在Apipost数据模型中用户可以预先创建多个数据模型,并在API设计过程中重复利用这些模型来构建API创建数据模型在左侧导航点击「数据模型」-「新建数据模型」在右侧工作台配置数据模型参数 引入数据模型在API设计预定义响应期望下点击引用数据模型,并选择需要导入的数据模型......