当前位置: 首页 > news >正文

P11537 [NOISG 2023 Finals] Toxic Gene 题解

先考虑如果所有的 T 已被排除,剩下的位置怎么判断是 R 还是 S

注意到每种细菌可以在样本中放入任意多个,容易想到经典的套路:将 \(8\) 个位置一起处理,第 \(i\) 个在样本中出现 \(2^{i-1}\) 次,再加入一个 T。若结果 \(\land 2^{i-1}=2^{i-1}\),则第 \(i\) 个对应的位置为 S,否则为 R。这部分一共需要 \(\frac n 8\) 次查询。

接下来考虑怎么排除所有的 T。发现 \(t\le 30\),容易想到二分。如果直接做需要 \(8t\) 次操作,无法接受。考虑仿照之前的思路进行分块,每次处理 \(8\) 个位置,一次查询可以判断是否存在 T。若存在,则可以得到块内所有 S 的位置,剩下一堆 TR

对每个含 T 的块二分出第一个 T 的位置,可以得到这个位置之前的都为 R。接下来考虑将 T 后面的位置全部加入一个集合,再对这个集合处理出每个位置为是 T 还是 R

继续仿照之前的思路,每次取出 \(8\) 个位置处理。一次查询可以得到这些位置全部为 R,或存在 T。存在 T 则跟之前一样二分,然后再排除一些数。由于所有的二分都是有效的(可以找到一个 T),所有非 T 的位置操作数是接近 \(\frac n 8\) 的,所以总操作数接近 \(3t+\frac n 4\approx 165\),只能获得 \(75\) 分左右。

注意到二分部分每次询问的位置数较少(\(\le 4\)),考虑利用这些空位处理一些非 T 的位置。每次二分判断的时候取出 \(8\) 个非 T 的位置一起判断(\(2^8+4<300\))。再通过将位置随机打乱,可以将总询问数做到 \(150\) 次以内,通过本题。查询次数最多的数据查询了 \(148\) 次,限制还是比较紧的。

http://www.wxhsa.cn/company.asp?id=5603

相关文章:

  • keil5中stm32相关记录
  • centos7中mysql环境配置
  • centos7中php环境配置
  • Symfony学习笔记 - 利用Doctrine开发一个学生信息的增删查改
  • 函数计算进化之路:AI Sandbox 新基座
  • linux通过smb共享文件夹,windows进行连接
  • 强制Apache Web服务器始终使用https
  • 初始vue3
  • 如何在Nginx服务器配置https以及强制跳转https
  • centos7中安装protobuf-c
  • 赞助NYU-Poly女性网络安全研讨会:推动行业多元发展
  • MyEMS:开源能源管理的探索与实践
  • 实时内核中的调度程序节流
  • 配置Burp Suite与Proxifier抓取微信小程序流量
  • 我的ai 相关工具站
  • C#第十一章 023 024
  • MyEMS:赋能每一个组织,成为自己的能源管理专家
  • Vue开发微信公众号上传图片
  • centos7中scrapy运行环境配置
  • flutter配置国内镜像
  • 微信小程序 live-player 无声音
  • 栈的妙用:如何优雅地处理括号匹配难题 (C语言版)
  • 食品包装 AI 视觉检测技术:原理、优势与数据应用解析
  • 电流探头的常见应用场景
  • WebRTC编码过载检测与帧率适应机制分析报告
  • PC桌面应用开发选择
  • 陈燕的项目启动笔记
  • C++面试宝典八股文之什么是封装、继承、多态(附面试宝典八股文PDF)
  • 无需复杂正则:SLS 新脱敏函数让隐私保护更简单高效
  • PLC结构化文本设计模式——适配器模式(Adapter Pattern)