程序笔记   发布时间:2022-07-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了[ARC123C]1, 2, 3 - Decomposition大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

壹、题目描述 ¶

传送门 to Atcoder.

贰、题解 ¶

前言

只能说什么结论都想不到了,真的啊......至少打个表嘛,这样或许还能发现 (forall i,f(i)le 5) 这个结论......

正文

将用 (1,2,3) 组成的数成为好的。那么我们的题意就变成,对于一个 (N),最少需要多少个好的数能够组成它。


◆ 好数之和的结构

我们将一个数 (A_i) 写成 (A_i=10a_i+b_i),那么,如果 (A_i) 是好的,它一定同时满足:

  • (b_iin{1,2,3})
  • (a_i) 是一个好数或者 (0)

所以,如果一个数能够被 (K) 个好数之和所表示,一定是以下两部分之和

  1. 一个在 ([K,3K]) 范围内的整数;
  2. 至多 (K) 个好数之和乘上 (10)

然后,我们可以使用一个比较暴力的 (rm DP) 来解决问题。


(rm DP) 的设计

定义 (f(i)) 表示 (i) 最少可以被多少好数之和所表示。

假设对于 (N),我们已经知道了 (f(x)(x<N)) 的值,那么,我们可以设计下面的转移:

首先,暴力从小开始枚举一个 (K),表示 (N) 能被多少好数所表示,那么我们这样转移:

  • 枚举一个 (rin[K,3K])
  • 如果存在 (x) 满足 (N=10x+r;and;f(x)le K),那么 (N) 即可表示为 (K) 个好数之和;

至于复杂度?似乎和 (K) 有关。但是 (K) 上界会是多少呢?


(K) 的上界以及时间复杂度

对于 (K) 的上界,我们可以使用归纳法证明:

  • (forall iin [1,10],f(i)le 5),打表或者手玩.....;
  • (forall N>10,exists Kle 5,rin[K,3K];text{s.t.};N-r=leftlfloor{Nover 10}rightrfloor),所以上界很容易发现是 (5),这是最大情况了;

那么,复杂度就有了保障,我们不用做 (rm DP),直接暴力搜就可以了。

叁、关键之处 ¶

显然,题解分析是从 好数本身 再到 好数之和,有时候不要太冒进了,分析基础的东西才是关键。

大佬总结

以上是大佬教程为你收集整理的[ARC123C]1, 2, 3 - Decomposition全部内容,希望文章能够帮你解决[ARC123C]1, 2, 3 - Decomposition所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: