ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

POI 2004/2005

2021-04-04 13:33:33  阅读:262  来源: 互联网

标签:begin end equation 2005 label Fib 2004 POI ref


Bankomat

显然越前面越优。由于模式串很短,所以可以记录每个位置后面 \(0\sim 9\) 最近的位置来优化匹配的过程。枚举所有四位数然后判断就行。

Points

Toy cars

当地上玩具太多时,和这道题一模一样地,扔掉接下来最晚需求的那个玩具。

用堆维护即可,注意每搞定一次需求,要再次丢入堆,更新该玩具下一次的需求。为啥不用删除呢?因为至少新丢入的晚于原先的,原先的不可能再被取到。

Piggy banks

从钥匙所在存钱罐向当前存钱罐连边,千万别想成拓扑了,这可是有环的,且连通块均为基环树(点数等于边数)。

但这个环非常美妙,首先它是循环的,即环上点可以互相到达,否则就会出现一个存钱罐存在两把钥匙的不合法情况。

那么剩下边的定向我们也是可以知道的,从环上每个点向其子树弄下去,所以环上任意一个点均可到达其余所有点,那么答案就是联通块个数了。

Knights

A Journey to Mars

首先不能走回头路,那么就只有两种旅行方式。为了方便不考虑环,反正是一样的。假设从 \(1\) 开始向 \(n\) 方向走,那么经过路 \(i-1\to i\) 的贡献为 \(p_i-d_i\)。搞出它的前缀和数组 \(pre\),对于一个起点 \(i\),如果存在 \(j\) 使得 \(pre_j-pre_i<0\) 则不合法,移项变成 \(pre_j<pre_i\),可以用线段树轻松维护。但没有修改操作,所以单调队列即可解决。

Bank notes

多重背包裸题,二进制拆分。

咋出现垃圾题了

Sumy Fibonacciego

全网首发中文正解。要知道抄袭波兰题解是非常艰难的一件事情

表示的存在性

考虑数学归纳法,假设 \(1\sim i(1\leq i\leq m,2\leq m)\) 位能表示 \(0\sim Fib_{i+1}-1\),显然在 \(1\) 和 \(2\) 的时候均成立。

因为 \(1\sim m-1\) 位能表示 \(1\sim Fib_m-1\),如果隔了 \(m\) 这一位的 \(0\),加上了 \(m+1\) 这个 \(1\) 的话,一定合法。这样可以表示出 \(Fib_0\sim Fib_m-1+Fib_{m+1}=Fib_{m+2}-1\)。

表示的唯一性

同样考虑数学归纳法,不妨找到两个表示最高的不同位。对于该位为 \(0\) 的那个表示,令其更低位取到最大;对于该位为 \(1\) 的那个表示,令其更低位取到最小:

\[10000\ldots 00(0)\\01010\ldots 10(1) \]

将前者的 \(1\) 分解成后两位的两个 \(1\):

\[01100\ldots 00(0)\\01010\ldots 10(1) \]

跳过前两位,形式不变,位数减少。显然在只剩三位和两位时均成立。

equation 的证明一概跳过。

一些特殊性质:

  • 直接相加后 \(2\) 两侧只能是 \(0\)。
  • 斐波那契数列是给定开始两项的。

\[\begin{equation} X0201Y_{Fib}=X1002Y_{Fib}\label 1 \end{equation}\]

\[\begin{equation} X0200Y_{Fib}=X1001Y_{Fib}\label 2 \end{equation}\]

\[\begin{equation} X02_{Fib}=X10_{Fib}\label 3 \end{equation}\]

\[\begin{equation} X0\underbrace{11\ldots 11}_{2l}Y_{Fib}=X\underbrace{10\ldots 10}_{2l}0Y_{Fib}\label 4 \end{equation}\]

\[\begin{equation} X0\underbrace{11\ldots 11}_{2l+1}Y_{Fib}=X\underbrace{10\ldots 10}_{2l}01Y_{Fib}\label 5 \end{equation}\]

先来考虑暴力,每次加入一位,然后维护。如果出现了 \(2\),就利用 \(\ref 1\) 和 \(\ref 2\) 不断往低位移。其中 \(\ref 2\) 会直接消掉 \(2\) 但可能出现 \(11\)。

移到最低位时可以利用 \(\ref 3\) 来搞掉。如果移到第二低位,此时末尾是 \(0020\) 这样,直接搞成 \(0101\)。

\[\begin{equation} X0210Y_{Fib}=X1100Y_{Fib}\label 6 \end{equation}\]

\[\begin{equation} X0211Y_{Fib}=X1101Y_{Fib}\label 7 \end{equation}\]

接下来要去掉连续的 \(1\),利用 \(\ref 4\) 和 \(\ref 5\) 可以搞掉。于是我们有了一个 \(O(n^2)\) 的做法。

如果一次性加完所有位,可能会出现一堆 \(2\)。

从低位往高位扫,同样利用 \(\ref 4\) 和 \(\ref 5\) 去掉连续的 \(1\),但这样会产生 \(21\) 这种副效果。利用 \(\ref 6\) 可以搞掉。

诶又出现了 \(211\) 这种副效果,不过别怕,利用 \(\ref 7\) 可以搞掉。最后的效果就是所有 \(1\) 和 \(2\) 均被 \(0\) 隔开。

\[\begin{equation} X201Y_{Fib}=X112Y_{Fib}\label 8 \end{equation}\]

\[\begin{equation} X200Y_{Fib}=X111Y_{Fib}\label 9 \end{equation}\]

紧接着,我们从高位往低位扫,利用 \(\ref 8\) 和 \(\ref 9\) 把 \(2\) 往低位移。

然后利用 \(\ref 8\) 去掉末尾是 \(20\) 的情况。

此时容易发现 \(\ref 9\) 会产生 \(1112\) 这种副效果,不过不用着急,因为锅还会更大,因为你发现了 \(202\) 无法处理。

先不管,理一理做完这步后整个表示的性质:

  • 可能存在 \(202\)。
  • 可能存在 \(2011\),比如说 \(20201\to 20112\) 或 \(20200\to 20111\)。但末尾不可能是 \(201\)。
  • 不存在 \(2010\)。
  • 不存在 \(200\)。
  • 可能存在 \(11\) 或 \(12\),但不可能存在 \(21\) 或 \(22\)。

然后我们想要最后两位不存在 \(2\),所以一种情况利用 \(\ref 3\)。

\[\begin{equation} X20_{Fib}=X12_{Fib}\label{10} \end{equation}\]

\[\begin{equation} X0\underbrace{11\ldots 11}_{2l}2_{Fib}={X\underbrace{10\ldots 10}_{2l+2}}{}_{Fib}\label{11} \end{equation}\]

\[\begin{equation} X0\underbrace{11\ldots 11}_{2l+1}2_{Fib}=X\underbrace{10\ldots 10}_{2l+2}1_{Fib}\label{12} \end{equation}\]

另一种情况利用 \(\ref 10\),然后利用 \(\ref 11\) 和 \(\ref 12\) 消去 \(2\) 前面紧跟着的 \(1\)。

  • 上面前四条性质显然不会被破坏。
  • 可能出现副效果 \(210\)。

\[\begin{equation} X2011Y_{Fib}=X2100Y_{Fib}\label{13} \end{equation}\]

\[\begin{equation} X021Y_{Fib}=X110Y_{Fib}\label{14} \end{equation}\]

\[\begin{equation} X121Y_{Fib}=X210Y_{Fib}\label{15} \end{equation}\]

从低位往高位扫,\(2\) 只会被推到前面。

仔细研究一下会发现所有情况都考虑进去了,之前做的工作没有白费,下面具体阐述一下:

  • \(020\),因为不存在 \(200\) 和 \(2010\),且末尾不是 \(201\),所以按照上面处理肯定不会存在。
  • \(202\),后面这个 \(2\) 会被消掉,直接没有了。
  • \(120\),\(1200\) 不存在,\(12011\) 被搞掉,\(12010\) 不存在。也不可能在末尾处出现特殊情况。

最后再做一遍第一步(可以简化因为没有 \(2\) 了)把所有 \(1\) 隔开。

恭喜你做出了一道人类智慧神题,你品,你细品。

2021.4.4 update:

有了简单多的方法。

考虑倒着扫,优先处理进位,进不了位再考虑 \(\ref 2\),特判一下末尾。这样能够消去所有的 \(2\),最后把所有 \(1\) 隔开。正确性需要讨论各种情况。

Template

Dicing

标签:begin,end,equation,2005,label,Fib,2004,POI,ref
来源: https://www.cnblogs.com/May-2nd/p/14616016.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有