[68] (NOIP集训) NOIP2024 加赛 5

news/2024/12/26 23:38:15/文章来源:https://www.cnblogs.com/HaneDaCafe/p/18556551

恐将成为我改题时间最长的一场(也是分最低的一场)

码长断崖式领先了

flowchart TBA(暴力操作)style A color:#ffffff,fill:#00c0c0,stroke:#ffffff

首先你肯定要让小于(等于)中位数的数变小,将较大的值变小是毫无意义的,因为即使你完全不管他们,也不会对答案造成任何影响,白白浪费费用

可以考虑二分答案枚举中位数是啥,然后尝试将前半段每个数都除到中位数以下,计算最小花费

可以注意到的是,如果一个数 \(a_i\) 除以 \(x\) 能到达中位数以下,那么 \(\ge x\) 的数都能做到,这告诉我们两点:一是可以二分答案求解这个 \(x\),二是我们应该在所有这些合法的里面取一个费用最小值,对费用做后缀 \(\min\) 即可

然后由整除分块经典结论,\(\lfloor{\frac{\lfloor{\frac{a}{b}}\rfloor}{c}}\rfloor=\lfloor{\frac{a}{bc}}\rfloor\),因此有可能提供的这个花费并不是最优花费,比如如果 \(cost_6\gt cost_2+cost_3\),这时用 \(6\) 就不如用 \(2\)\(3\),因此考虑分解其质因数,用质因数花费之和来更新当前值的花费

需要注意的是值域并不只到 \(V\),一个 hack 是 \(V\) 很小,\(a_i\) 很大,值域开小了可能出现超过二分上界的问题(即一个数需要被除很多次)

flowchart TBA(异或连通)style A color:#ffffff,fill:#00c0c0,stroke:#ffffff

线段树分治

按照线段树分治的思路直接做

这道题的难点在找到操作会影响哪些区间,上个结论

操作影响的区间一定形如若干连续段,且连续段不超过 \(\log\)

证明:考虑拆位,操作 \(s\) 满足 \(s\operatorname{xor}x\lt K\),当且仅当存在某一位 \(i\),使得对于任意更高位 \(j\)\(s_j\operatorname{xor}x_j=K_j\),且 \(s_i\operatorname{xor}x_i=1,K_i=0\)

如果我们对询问建一颗 Trie 树,符合要求的询问一定对应 Trie 上某个子树,如果我们事先对询问排序,那么对应的就是一个连续的区间了,由于 Trie 深度最高 \(\log\),因此连续段也不超过 \(\log\)

因此,本题的方案就是:对询问建立 Trie 树,找到询问区间,然后直接线段树分治即可

flowchart TBA(民主投票)style A color:#ffffff,fill:#00c0c0,stroke:#ffffff

按照题目给的 “每个人只能投给父节点” 投票,我们可以通过二分答案计算出一个最大得票数量的最小值(意思就是把票尽可能均摊给每个人,让得票最多的那个人得的最小),记这个值为 \(s\)

记一个节点的子树大小为 \(s_i\)(不包含自己,因为自己无法给自己投票),现在我们要想让 \(i\) 赢,可以分成以下情况:

  • \(s_i\gt s\),然而我们刚才得到的最大的票数量是 \(s\),说明 \(i\) 最多只拿了 \(s\) 票,那么子树内就一定存在节点将票投给了 \(i\) 的祖先,现在这些节点将票收回来,都投给 \(i\)\(i\) 的票数只会增加(并最终大于 \(s\),因为 \(s_i\gt s\)),祖先的票数只会减少,最终 \(i\) 可能是胜出者
  • \(s_i\lt s\),和上述情况类似,即使子树内所有票都投给了 \(i\),仍然不满足 \(s_i\ge s\),而子树内更不可能有 \(s_i\ge s\) 的节点,但是现最大票数为 \(s\),说明子树外一定有票数为 \(s\) 的节点,\(i\) 一定失败
  • \(s_i=s\),此时需要特殊判断,这种情况下 \(i\) 想要胜出,可以先钦定最大票数只有 \(s-1\) 票,这样多出来的票会汇集到根节点,此时钦定 \(i\) 获得了 \(s\) 票,并且由于子树外最大票数是 \(s-1\) 票,因此 \(i\) 自己那一票只能直接传到根节点,否则不会胜利

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/837277.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研打卡(23)

开局(23) 开始时间 2024-11-20 11:07:52 结束时间 2024-11-20 12:01:50十一点醒了数据结构已知 10 个元素 (54,28,16,34,73,62,95,60,26,43) , 按照依次插入的方法生成一棵二叉排序树,查找值为 62 的结点所需比较次数为_____(复旦大学 2014年) A 2 B 3 C 4 D 5B…

apache直接打印php代码或直接下载问题

在/etc/httpd/conf/httpd.conf中的添加圈出的代码:下载问题,直接执行,然后重启apache: yum install mod_php

Java易混知识点列表比较

前前后后遇到了一些容易混淆的知识点,特地做了表格专栏捋清思路类一级成员与实例成员类一级成员 实例成员属于 类本身 类创建的实例对象举例 static(变量/方法/初始化块)、内部类 普通成员直接访问 类名.member 对象.memberclass superc{int i=5;void show(){System.out.pri…

新兴数据仓库设计与实践手册:从分层架构到实际应用(二)

本手册将分为三部分发布,以帮助读者逐步深入理解数据仓库的设计与实践。第一部分介绍数据仓库的整体架构概述; 第二部分深入讨论ETL在数仓中的应用理论,ODS层的具体实现与应用; 第三部分将围绕DW数据仓库层、ADS层和数据仓库的整体趋势展开;通过这样的结构,您可以系统地学…

【跟着阿舜学音乐-笔记】1.14代理和弦

三和弦代理和弦 代理和弦是指两个和弦从功能上能够相互替代,彼此代替对方执行相互的功能。 这意味着互为代理和弦的两个和弦在功能上有一定的互通性,这就是1.12提到的——拥有两个以上共同音的称为代理和弦。 同时,这种功能上的共通性也有着一定的强弱,在同属关系下,关系大…

TCP/UDP套接字基础编程及拓展

本文章旨在进行TCP/UDP基础套接字编程并在其基础上进行更新拓展。一、环境 1.1 客户端:windows宿主机 1.2 服务器端:Linux虚拟机 1.3 注意事项 测试套接字编程通信时,先确保C/S能互相ping通,且双方主机防火墙允许目的端口号为“创建的端口号”的数据包通过。 二、代码 2…

6款Win电脑高效实用办公软件推荐

作为打工人,是不是总觉得工作效率提不上去呢?今天我就来给大家分享 6 款办公超实用的软件,让你的工作事半功倍! 一、WPS 比office更适合职场小白上手的办公软件!它涵盖了文字、表格、演示等多种功能。写文档时,丰富的模板库能让你快速找到灵感,各种排版和编辑工具一应俱…

bladeX物联网平台私库操作处理步骤

(一)获取对方私库代码并上传到自己的gitlab 步骤 1: 克隆对方的私有仓库 首先,您需要在本地计算机上克隆对方的私有仓库。这通常需要使用HTTPS或SSH URL,并且可能需要身份验证(如用户名和密码、SSH密钥等)。# 假设您已经配置了SSH密钥或知道HTTPS的用户名和密码 git cl…

震撼推荐!性能测试全攻略:零基础也能玩转性能测试!

1、提起性能测试,你的第一反应是什么? 当提到性能测试,你的第一反应是什么?是不屑一顾,认为它很简单,没发展前途、没技术含量?还是觉得它太难了,高不可攀,每当遇到系统的疑难杂症时,抓耳挠腮,无从下手? 很多IT从业人员,认为"性能测试仅仅只是测试的工作,会用…

不同类型的OA办公系统分别有什么作用?

不知道大家有没有发现,在不知不觉间,OA(Office Automation)办公系统的应用已经发展得越来越广泛,可以说是涉及到工作的方方面面。你们想过这是为什么吗? 因为OA办公系统不仅提高了工作效率,还优化了企业的管理流程。随着科技的不断进步,OA办公系统的类型也日益丰富,满…

React+AntD Table支持下拉分页和自定义输入分页条数

实例支持在下拉分页框内输入分页条数来实现自定义分页代码usePageSizeSelect.jsimport {useEffect, useState} from "react"; import Bus from "../../utils/eventBus";export function usePageSizeSelect() {const onInputKeyDown = (e) => {const tem…