构造交互做题记录

news/2025/2/22 11:40:16/文章来源:https://www.cnblogs.com/liuir/p/18718828

感觉构造和交互挺像的,都是人类智慧题。

\(\text{I}\). *[JOISC2022] 一流团子师傅

观察到 \(nm\)\(10000\),而询问次数限制是 \(50000\),所以盲猜询问次数为 \(O(nm\log m)\)

假设加入时优先填充编号小的竹竿,那么能插入的竹竿就具有单调性,可以二分。

接下来考虑判断能否插入竹竿 \(i\)。因为每种颜色的团子数恰好等于总竹竿数,所以若有一个竿子上面有两个团子,其他的竹竿就不能插入 \(m\) 根竹竿。

具体来讲,询问 \([i+1,m]\) 号竹竿上的团子和未被填放的团子,若不能插入 \(m-i\) 根竹竿,说明 \(i\) 号竹竿原本就有团子。这样就可以判断了。

\(\text{II}\). luoguP9916 「RiOI-03」Just a Q. (Easy ver.)

先关注 SubTask3。可以发现,若先询问一次集合 \(S\),再询问集合 \(S\cup T\),此时有 \(Q=\prod_{i\in S}q_i(\prod_{i\in T}q_i+1)\)

这里惊喜地出现了喜闻乐见的乘法,因为这样就可以很好的判断正负了。

所以考虑维护出前缀的 \(\prod(q_i+1)\),每次新加入一个 \(p\) 就暴力把 \(\prod\) 拆开计算得到新的 \(\prod(q_i+1)\)

这样询问次数是 \(\Theta(2^{n-1})\) 的,可以通过 SubTask3。进一步思考可以发现:最初加入的 \(q_1+1\) 是没必要的,可以只加入 \(q_1\),这样询问次数就降到了 \(\Theta(2^{n-2})\)

因为这是交互题,所以考虑分治。

假设现在确定了答案在区间 \([l,r]\) 内,那么只需判断 \([l,mid]\) 的乘积是否为负。

\(Q=0\),直接判断即可。

否则就类似地乘上 \(\prod+1\) 来判断正负。

因为只会递归 \(\log\) 层,每层都询问次数都可能会 \(\times2\),所以总询问次数为 \(\Theta(2^{\lceil\log_2n\rceil})\)

注意一个小细节,因为判断的是 \([l,mid]\),所以 \(mid\) 要取 \(\frac{l+r-1}{2}\)。不然 \(\left|S\right|\) 就会爆炸。

\(\text{III}\). luoguP9918 「RiOI-03」Just a Q. (Hard ver.)

这题询问次数限制非常紧,无法在套用上题 \(\times(q_i+1)\) 的方法。

换一个角度,如果每次查询都乘上 \(+\infty\),那么就不需要管之前的 \(Q\),可以直接判断正负。

若记 \(a=\prod_{i=l}^{mid}q_i,b=\prod_{i=mid+1}^rq_i\),因为 \(a,b\) 一正一负,所以有 \(\max(\left|a\right|,\left|b\right|)>\left|a+b\right|\)。所以在递归下去时给后面的查询都乘上 \(\max(\left|a\right|,\left|b\right|)\) 就可以避免这一步的影响。

具体来讲,每次求出 \(a,a+b\) 的值,并依次判断 \(a,b\) 的正负和 \(\left|a\right|,\left|b\right|\) 的大小,然后递归下去。

询问次数为 \(2\lceil\log_2n\rceil\)\(\left|S\right|\le \lceil1.5n\rceil\)

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

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

相关文章

Diffusion-DPO:一种基于直接偏好优化的扩散模型对齐新方法

本文介绍了一种名为 Diffusion-DPO 的方法,该方法改编自最近提出的直接偏好优化 (DPO)。DPO 作为 RLHF 的简化替代方案,通过分类目标直接优化策略,以更好地满足人类偏好。诸如 GPT-4 和 Llama 2 等高性能大型语言模型 (LLM) 的训练通常分为两个阶段:https://avoid.overfit.…

联网搜索接口!大模型API和私有化部署联网搜索接口:基于互联网搜索服务的 API 接口技术分享与应用实践

联网搜索接口!大模型API和私有化部署联网搜索接口:基于互联网搜索服务的 API 接口技术分享与应用实践关键词:API 接口、互联网搜索、大模型、私有化部署、数据采集、技术分享、微信小程序、数字续坚、竞品对比一、引言在大模型 API 开发与私有化部署日益普及的背景下,如何在…

687. 最长同值路径(中)

目录题目题解:后序遍历 题目给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。题解:后序遍历通过深度优先搜索后序遍历二叉树,计算并更新每个节点…

week 01 C语言基础

Week01 一.语言基础认知 1.1 C语言是什么? 通过一系列的语法和语义规则来描述计算机程序的行为和逻辑,可以将程序转化为二进制指令,并由CPU执行。 语言=语法+逻辑 1.2 C语言的特点简洁C语言的语法简单,简单明了,使得程序易于阅读和理解。高效C语言的执行效率高,可以用于开…

Qt布局之QSplitter

简述 QSplitter拆分器是一个布局控件。用户通过拖动它们之间的边界来控制子部件的大小。 在不确定子部件UI大小时,可以用此控件布局,让用户自行调整控件尺寸。 属性名称 类型 描述childrenCollapsible bool 用户是否可以将子部件的大小调整为0。默认情况下,子控件是可…

学习理论:预测器-拒绝器多分类弃权学习

弃权学习(learning with abstention)主要是为了使分类器在学习过程中可能出现的误导性或者不正确的信息时(这常被称为“幻觉”),能够对做出预测进行弃权。目前,弃权学习的方法主要可以分为以下几种:基于置信度的方法(confidence-based methods)。这种方法在预训练模型…

Cypher Chapter 6:DIGITAL CRYPTOGRAPHY

PUZZLE1 0110 0100 0110 0001 0111 0100 0110 0001SOLVE1 通过 ASCII 码表可知,明文为 data。 PUZZLE2 HELLO 0011 1111 0010 1010 0011 1110 0010 0000 0010 1011SOLVE2 容易猜出答案是 world,不过如何得到的呢? 考虑将 HELLO 换为 ASCII 码形式,即 0100 1000 0100 0101 0…

2246. 相邻字符不同的最长路径(难)

目录题目题解:dfs 题目给你一棵 树(即一个连通、无向、无环图),根节点是节点 0 ,这棵树由编号从 0 到 n - 1 的 n 个节点组成。用下标从 0 开始、长度为 n 的数组 parent 来表示这棵树,其中 parent[i] 是节点 i 的父 节点,由于节点 0 是根节点,所以 parent[0] == -1 。…

普通人如何靠 AI 副业,1 个月实现月薪 3 万 +

在物价飞涨、经济低迷的今天,仅靠死工资,却有着不固定的开销?房贷、车贷、孩子的教育费用…… 望着日益增长的开销,你是否也在夜深人静时,为钱包的羞涩而发愁?无数次幻想过拥有一份高收入的副业,却始终在迷茫中徘徊,不知从何下手。 如今,AI 时代的浪潮汹涌而来,为我们…

C内存模型

分区 在C语言中,内存被分为以下几个部分 .text 代码段,存放程序的可执行代码,不可修改 .rodata(Read Only Data) 常量区,存放全局常量 .data 数据段,存放已初始化的全局变量和静态变量 .bss(Block Started By Symbol) 未初始化数据段,存放未初始化的全局变量或者初始化为…

探秘Transformer系列之(5)--- 训练推理

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(5)--- 训练&推理 0x00 概述 Transformer训练的目的是通过对输入…

124. 二叉树中的最大路径和(困难)

目录题目题解:后序遍历 题目二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回…