看到很大的范围限制,很容易想到数位 dp
,记录当前 \(mod\ X\) 的值。但是 \(X\) 会非常大,复杂度爆炸。
考虑不用数位 dp
怎么做。容易想到直接枚举 \(X\) 倍数然后判断是不是只用了所给数字。这样又因为 \(X\) 可能非常小,再次爆炸。
想到可以结合一下两种方法,考虑根号分治,当 \(X\leq 10^5\) 时,数位 dp
解决,否则枚举。这样就可以均衡复杂度了。
剩下板子。
接下来是鲜花部分。
之前做弹飞绵羊的时候,有一个很离谱的想法:如果维护两个不同的操作,时间复杂度一个 \(O(1)\),一个 \(O(n)\)。是不是一定有一种方法,可以通过对 \(O(1)\) 部分进行预处理,使得总复杂度降到 \(O(\sqrt n)\)?
但当我想将这种思维带进区间加和区间查询,或是区间推平时,很明显出现了错误:这本是两个 \(O(n)\) 复杂度的操作,却可以以 \(O(\sqrt n)\) 的复杂度完成?
有人说前缀和,但分块做法很明显不是根据前缀和进行改进。
也许解决这个问题可以将数据结构上升至一个新的高度。
就是乱说的。
标签:鲜花,P6371,复杂度,做题,dp,数位 From: https://www.cnblogs.com/yinhee/p/P6371.html