摘要:
分析 注意到字符集大小很小,那么很容易就会产生回文,那么合法序列的种类就会比较有限。 思考对于不同长度而言合法序列的种类,显然长度为 \(1\) 时无回文,长度为 \(2\) 只要两个字符不同就无回文。 尝试扩展到长度为 \(3\) 时的情况,显然 \(s_1 \neq s_2\),\(s_2 \n 阅读全文
摘要:
分析 看着感觉很不可做,因为第一个人走的方式有巨大的后效性。 但是发现 \(n=2\),那么第一个人走的方式一定是先在上面走一段,再在下面走一段(直接走下面视为先在上面走了 \(0\) 个数) 设第一个人在 \(x\) 处从第一行下去,那么第二个人能选择的数之和一定为第一行 \(x + 1\) 的后 阅读全文
摘要:
分析 放桌子有两种放法,一种是上下放,一种是左右放,分别计算最小值取 \(\min\) 即可。 注意到原题使用的是平面直角坐标系,于是将原图顺时针旋转 \(90^{\circ}\),将下标表示方式与代码中下标的表示方式统一,相应的,左下角和右上角也变成了左上角和右下角。 代码 #include <i 阅读全文
摘要:
分析 首先对于小于 \(6\) 的数答案一定是 \(15\)。 然后发现 \(6、8、10\) 分别是 \(3、4、5\) 的二倍,而且对于三种做法做一块披萨所用的时间都是一样的,所以只要一个数能被这三个数凑出来,最后的总用时就是这个数乘以做一块披萨所用的时间。 \(3、4、5\) 作为 \(3、3 阅读全文
摘要:
分析 看到求最大值最小,不难想到二分。 很容易想到二分最大可取边长度。 思考如何check。 首先如果存在一点 \(u\) 符合条件,那么我们很难判断那条边该翻哪条边不该翻,很难去check。 那么大胆假设对于每个点 \(u\),每条边的方向只会确定为一个状态。 尝试证明。 假设存在边 \(a, b 阅读全文
摘要:
分析 首先看到那个 \(10^{100}\) 再加上样例,我们就能意识到在不是特别多的操作次数后这颗树上的值就会全变成 \(0\)。 因为没有子节点在一次操作后显然就会变成 \(0\),然后第一次叶节点就会变成 \(0\),然后下一次子节点中只有叶节点的就会变成 \(0\),以此类推,理论上最多操作 阅读全文