OI

洛谷题库 P4287 [SHOI2011]双倍回文

唉,还是没有考虑清楚细节。

容易发现,一个双倍回文串必定是一个回文串,同时前半段也是一个回文串。那么在使用Manacher算法求取每个字符对应的最长回文串时,就可以同步更新答案。

但一开始我写出这样的判断:

  1. 1
  2. 2
  3. 3
// 完成第i个字符的最长回文的更新后 if (len[i] % 4 == 0 && len[i - (len[i] >> 1)] == len[i] / 2) ans = max (ans, len[i]);

(更多…)

More
  • 2021年10月4日

先放原题:

将正整数1,2,3,,301, 2, 3, \dots, 30划分为kk组,使得每组内任意两数之和不等于任何完全平方数。求kk的最小值。(《培优新方法》八年级数学 §23 第3题)

嗯,对手搓暴力枚举来说数据确实大了点。抱着“反正也不可能求出正解”的心态,我尝试遍历了这些数,在第ii遍历时,将符合要求的数依次加入第ii组。具体来讲,如果数gg和第ii组里的任何数之和都不是完全平方数,则将gg加入该组并在随后的遍历中忽略。最终一共遍历了33遍才将所有数分完,所以我大剌剌填了33上去。往后一翻——答案就是33

然后某人发表暴论:“这有点像一道编程题。我在一本讲程序设计的书上看到过。”我同意。于是就有了这篇帖。

(更多…)

More
  • 2021年9月11日

洛谷题库 P2569 [SCOI2010]股票交易

f(i,j,0/1/2)f(i,j,0/1/2) 表示第 ii 天持有 jj 支股票,并且当天进行了 持有 / 买 / 卖 操作,所能获得的最大的收益。很容易想到以下转移:

f(i,j,0)=max{f(k,j,t)k<i,t{0,1,2}};f(i,j,1)=max{f(k,p,t)k<iw,pj,t{0,1,2}};f(i,j,2)=max{f(k,p,t)k<iw,pj,t{0,1,2}}\begin{aligned}&f(i,j,0) = \max \{f(k,j,t) \mid k < i,t\in\{0,1,2\}\}; \\ &f(i,j,1)= \max \{f(k,p,t) \mid k < i-w, p \leq j,t\in\{0,1,2\}\}; \\ &f(i,j,2)= \max \{f(k,p,t) \mid k < i-w, p \geq j,t\in\{0,1,2\}\} \end{aligned}

(更多…)

More
  • 2021年7月25日

洛谷题库 P1852 跳跳棋

我仍然坚持认为这道题不应该放在LCA的专题里面

一拿到题我毫无头绪……这看起来跟最近公共祖先没有半毛钱关系啊?我的第一反应是“递推出从某个状态开始能达到的所有状态”,时间复杂度大约是O(2N)\mathbf{O}(2^{|N|})(至于为什么底数为22,请看完下一节后思考)。但很明显,坐标在±109\pm 10^9范围内的数据可容不下这般折腾。

但鉴于它被放在这个专题中,我们就尝试从的角度来考虑。

(更多…)

More
  • 2021年7月25日