P8477 「GLR-R3」春分

题目看起来比较魔怔,考虑怎么搞一下。

首先,一个最简单的想法,每对溶液组都配一个板子,可以用 \(n^2\) 个板子解决,看得出来很不优啊,但是可以得到 Sub1 的分数。

节俭一点,我们如果把每个板子都拿出来一面用来对应一种溶液,此时就可以拼起来,只需要 \(2n\) 个板子解决,可以获得 Sub1,Sub2 的分数。

我们发现,上面的做法有一个很严重的缺陷:每个板子都有一面是没有接触过溶液的,我们考虑对这里进行优化。

考虑 \(X\) 没有接触过溶液的背面有什么用,我们把 \(X\) 平均分成两组,一组是 \(X_1 = \{x_1,x_2,\cdots,x_{\lfloor \frac{n}{2}\rfloor}\}\),一组是 \(X_2=\{x_{\lfloor \frac{n}{2}\rfloor+1},x_{\lfloor \frac{n}{2}\rfloor+2},\cdots,x_n\}\)。

我们现在为每个 \(X_1\) 的板子都和 \(Y\) 的分割板子去做实验,此时需要共 \(n+\lceil\frac{n}{2}\rceil\) 个

我们发现此时对于剩下的那一部分我们可以通过对板子进行组合来实现全部覆盖,那么总共需要的就是 \(\lceil\frac{n}{2}\rceil+ n\),通过计算我们可以发现正好多 \(1\),不能通过 Sub3。

因此我们需要对这个算法进行优化,发现其实我们对于奇数的情况完全不需要单独的一个板子,我们在完成翻转后的实验前,可以先让 \(x_n\) 和 \(Y\) 组实验,这样在最后可以减少一块额外的分隔板,因此可以优化到 \(\lfloor \frac{n}{2} \rfloor+n\),完全可以通过 Sub3。

考虑如何通过 Sub4,我们发现 Sub3 里用干净的板子去接触了不干净的板子导致干净的板子被污染了,如果能利用干净的板子就可以更优一点。

如果我们先把 \(X\) 和 \(Y\) 都平均分成三部分,然后先用 \(X_1\) 和 \(Y_{1\sim 3}\) 全部贴一次,此时我们会得到 \(\frac{n}{3} + n\) 个板子。

那么就会形成一个这样的图。

我们此时拿出 \(Y_3\) 翻转用没有染上的那面去染上灰色(灰色那里没有板子),此时我们在 \(Y_3\) 这里直接把 \(X_1\) 被污染的一面的和 \(Y_3\) 被污染的一面拼起来,此时就剩下没有被污染的两面,直接进行 \(X_2\) 与 \(Y\) 的配置即可。

在染上之后我们的 \(X_1\) 两面都被污染了,但是容易发现 \(Y_1\) 和 \(Y_2\) 依然没有被污染。

我们直接把 \(Y_2\) 翻面给 \(X_3\),这样我们就能得到一个左侧 \(X_3\) 右侧 \(Y_2\) 的板子。

我们把原本有一面没被污染的 \(Y_1\) 和 \(Y_3\) 拼过来就行,需要 \(\frac{4n}{3}\) 个板子,能过 Sub4。

看一下 Sub5,我们发现 Sub4 有一些非常不优的地方导致了还可以进一步优化,可以发现在 Sub4 中我们的思路是保证那么一大片全都是空白的才能拼。

但是我们发现事实上我们只需要一个空白板即可。

我们对左边分成 \(4\) 份,对右边分成 \(4\) 份,此时只对于左边的 \(X_1\) 配板,对于右边全部配板。

然后把 \(X_1\) 与 \(Y_{\{1\sim 4\}}\) 全部反应一次,我们把 \(X_1\) 反过来放 \(X_2\),中间隔一个空白板,直接和 \(Y_{\{i\sim 4\}}\) 全部反应一次。

然后用类似上一步的方法进行反应即可,需要 \(\frac{n}{4}+n+1\) 块,可以通过 Sub5。

此时我们发现一件事,诶我们这里 \(X\) 和 \(Y\) 分的总量都是相同的,我们对于左侧分成两部分 \(X_1,X_2\),对于右侧分为三个部分 \(Y_1,Y_2,Y_3\),其中对于 \(X_1\) 配板,同时 \(Y_1,Y_2\) 配板。

我们先对于 \(X_1\) 和 \(Y_1,Y_2\) 进行实验,在试验后我们加入一个空白隔板,让 \(Y_1\) 翻面,此时隔着空白隔板进行 \(Y_3\) 的实验,空白隔板的一面会和 \(Y_1\) 接触导致污染。

此时我们翻转 \(X_1\) 进行 \(X_2\) 的实验,把空白隔板被污染的一面给到 \(X_1\) 被翻转的一面,然后进行实验 \(X_2\) 与 \(Y\) 的实验,由于 \(Y_2\) 还有一面没有被污染,所以刚好能行。

可通过 Sub7。

【解题报告】P8477 「GLR-R3」春分的更多相关文章

  1. 「ZJOI2016」解题报告

    「ZJOI2016」解题报告 我大浙的省选题真是超级神仙--这套已经算是比较可做的了. 「ZJOI2016」旅行者 神仙分治题. 对于一个矩形,每次我们从最长边切开,最短边不会超过 \(\sqrt{n ...

  2. 「THUSCH 2017」大魔法师 解题报告

    「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵 ...

  3. 「AHOI / HNOI2018」转盘 解题报告

    「AHOI / HNOI2018」转盘 可能是我语文水平不太行... 首先可以猜到一些事实,这个策略一定可以被一个式子表示出来,不然带修修改个锤子. 然后我们发现,可以枚举起点,然后直接往前走,如果要 ...

  4. 「CTS2019 | CTSC2019」氪金手游 解题报告

    「CTS2019 | CTSC2019」氪金手游 降 智 好 题 ... 考场上签到失败了,没想容斥就只打了20分暴力... 考虑一个事情,你抽中一个度为0的点,相当于把这个点删掉了(当然你也只能抽中 ...

  5. 「CTS2019 | CTSC2019」随机立方体 解题报告

    「CTS2019 | CTSC2019」随机立方体 据说这是签到题,但是我计数学的实在有点差,这里认真说一说. 我们先考虑一些事实 如果我们在位置\((x_0,y_0,z_0)\)钦定了一个极大数\( ...

  6. 「JOI2019 Final」解题报告

    传送门 「JOI2019 Final」勇者比太郎 看懂题就很简单了,后缀和随便维护一下就好了,别用树状数组强加一个\(\log\)就行. 「JOI2019 Final」画展 显然可以先把所有的画框按大 ...

  7. 「SOL」JOISC2021 解题报告

    JOIS(egment-Tree)C 1. 前言 很早之前教练让我们做这套题,我以为这套题应该挺简单,用几天的空余时间就能刷完,结果预想的短周期刷题变成了长周期刷题--(好像是整个团队里最后一个刷完的 ...

  8. 「TJOI / HEOI2016」字符串

    「TJOI / HEOI2016」字符串 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 \(n\) 的字符串 \(s\),和 ...

  9. 「BZOJ 4228」Tibbar的后花园

    「BZOJ 4228」Tibbar的后花园 Please contact lydsy2012@163.com! 警告 解题思路 可以证明最终的图中所有点的度数都 \(< 3\) ,且不存在环长是 ...

  10. 「BZOJ 3645」小朋友与二叉树

    「BZOJ 3645」小朋友与二叉树 解题思路 令 \(G(x)\) 为关于可选大小集合的生成函数,即 \[ G(x)=\sum[i\in c ] x^i \] 令 \(F(x)\) 第 \(n\) ...

随机推荐

  1. Known框架实战演练——进销存业务单据

    本文介绍如何实现进销存管理系统的业务单据模块,业务单据模块包括采购进货单.采购退货单.销售出货单.销售退货单4个菜单页面.由于进销单据字段大同小异,因此设计共用一个页面组件类. 项目代码:JxcLit ...

  2. 微服务:nacos服务注册与发现

    服务治理的三个角色: 服务提供者:订阅服务 服务消费者:注册服务 注册中心:记录与监控服务状态,推送服务变更信息.提供者定时发送心跳检测,心跳检测失败,就会向消费者推送变更 提供者通过负载均衡的算法选 ...

  3. [春秋云镜] Initial

    [春秋云镜] Initial **整套网络环境拓扑:** ​​ 一.打进内网 开局一个ip:39.101.184.25,fscan扫一下 ​​ 存在thinkphp5.0.23的漏洞,可以rce,我们 ...

  4. Jmeter边界提取器

    组件路径:HTTP请求->右键添加->后置处理器->边界提取器 用途:边界提取器(Boundary Extractor)是放在Sample请求之后执行的,用于获取左右边界中间的所有字 ...

  5. 【Java】JNDI实现

    前提情要: 培训的时候都没讲过,也是书上看到过这么个东西,进公司干外包的第二个项目就用了这个鬼东西 自学也不是没尝试过实现,结果各种失败,还找不到问题所在,索性不写了 JNDI实现参考: 目前参考这篇 ...

  6. MyBatisPlus公共字段自动填充

    公共字段自动填充 公共字段 新增员工,修改.编辑员工信息时,都需要设置创建时间,修改时间等操作,这些操作过于重复.繁琐,为了有更快捷高效的,MyBatisPlus提供了公共字段自动填充功能,当我们执行 ...

  7. python运行报错:ImportError: libcudnn_cnn_infer.so.8: cannot open shared object file

    运行报错: 解决方法: conda install cudatoolkit==11.8.0 python3 -m pip install nvidia-cudnn-cu11==8.7.0.84 成功解 ...

  8. JMH:基准测试工具套件-应用

    1.背景 多线程性能测试 JMH:简介 JMH is a Java harness for building, running, and analysing nano/micro/milli/macr ...

  9. SMU Summer 2024 Contest Round 2

    SMU Summer 2024 Contest Round 2 Sierpinski carpet 题意 给一个整数 n ,输出对应的 \(3^n\times 3^n\) 的矩阵. 思路 \(n = ...

  10. Linux驱动小技巧 | 利用DRIVER_ATTR实现调用内核函数

    1. 前言 很多朋友在调试驱动的时候,都会遇到这样一个场景: 修改一个参数,然后调用某个内核中的函数. 比如将某个gpio的值拉高/拉低,修改某个寄存器的值等等. 如果每一个参数都通过字符设备的ioc ...