题解CF1336D Yui and Mahjong Set
Posted Qiuly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解CF1336D Yui and Mahjong Set相关的知识,希望对你有一定的参考价值。
给一个稍微复杂点的做法()。
考虑用 $\\mathbftriplet$ 为辅确定单个元素,$\\mathbfstraight$ 为主求解。首先将问题以 $n$ 的奇偶性分成两种情况,然后可以注意到两个点:
- 问某个 $a_i$ 第两次后一定能确定它的值。
- 当知道某个 $a_i$ 是否为 $0$ 时,只需要问一次就可以知道它的值。
那么首先考虑 $n$ 是奇数的情
给一个稍微复杂点的做法()。
考虑用 \\(\\mathbftriplet\\) 为辅确定单个元素,\\(\\mathbfstraight\\) 为主求解。首先将问题以 \\(n\\) 的奇偶性分成两种情况,然后可以注意到两个点:
- 问某个 \\(a_i\\) 第两次后一定能确定它的值。
- 当知道某个 \\(a_i\\) 是否为 \\(0\\) 时,只需要问一次就可以知道它的值。
那么首先考虑 \\(n\\) 是奇数的情况:
- 首先问所有偶数,保证此时所有偶数上的值大于 \\(0\\) 。注意问 \\(a_2\\) 的时候需要保证 \\(a_4\\) 大于 \\(0\\),问 \\(a_n-1\\) 的时候需要保证 \\(a_n-3\\) 大于 \\(0\\) 。
- 此时借用 \\(a_2\\) 的结果判断 \\(a_3\\) 是否够等于 \\(0\\),用 \\(a_n-1\\) 的结果判断 \\(a_n-2\\) 是否等于 \\(0\\),然后花两次询问确定 \\(a_3,a_n-2\\) 。
- 接着将除去 \\(a_n-1\\) 之外的所有偶数都问一遍确定值,然后用 \\(a_4,\\cdots a_n-5\\) 的结果求得 \\(a_5\\cdots a_n-4\\),再用 \\(a_n-3\\) 的结果求出 \\(a_n-1\\) 。
- 最后用原来 \\(a_3,a_n-2\\) 的结果求出 \\(a_1,a_n\\),总共恰好花费 \\(n\\) 次操作,注意 \\(n=5,7\\) 的情况。
然后考虑 \\(n\\) 是偶数的情况:
- 首先询问所有的偶数,注意仍然要最后问 \\(a_2,a_n\\) 。
- 再问一次 \\(a_n-2\\),得到 \\(a_n-2\\) 的值,然后通过 \\(a_n\\) 的结果求得 \\(a_n-1\\) 的值。(如果 \\(a_n-1=0\\) 就很难继续做,处理方式是再问一次 \\(a_n\\) 然后同时去掉后两项,注意不要删到只剩下两个,然后特殊处理 \\(n=4\\) 的情况)。
- 问出 \\(a_3\\),然后再问一遍所有除 \\(a_n,a_n-2\\) 以外的所有偶数,求出之间的所有奇数。
- 最后求出 \\(a_1\\) 即可。
以上是关于题解CF1336D Yui and Mahjong Set的主要内容,如果未能解决你的问题,请参考以下文章
CF276E Little Girl and Problem on Trees 题解