前言
solve:4
rank:48!!!!!!!!!!
这排名我不理解了
solve4真真不算多啊…
而且前四题感觉也不算太难…
仔细看了看榜
哦…
因为这次E和F都太阴间了
所以甚至到2000rnk还是solve4占主流…
人均ABCD呗
而我由于一开始状态很好
做的飞快
占了罚时的便宜,几乎到了solve4的排头
可惜只是虚拟赛了qwq
A
大水题
无话可说
B
一开始蚌住了
想复杂了
这题真是,如果想不到一辈子都想不到
只好先做的C
回来后灵光乍现想到了先全按1分段的做法
然后就easy了
C
也挺水的
D
这个应该是做的很不错的一道题了吧
几乎就是题解思路
快速的做出来D题是我这次排到这个rnk的决定性因素
E
看了题解
确实挺神仙
对于一个固定的序列计算价值,我们考虑一个贪心的思路
倒着取
再第一个出现递减的位置尝试分裂大者
肯定要尽可能的使分裂后的队首大
因此我们就取分裂次数为 ceil(a[i]/a[i+1])-1
队首大小就是 a[i]/ceil(a[i]/a[i+1])
继续往前做就行了
(考场想到倒序分裂了,但还是没贪出来qwq)
然后考虑如何计算所有子串的贡献
设计 dpi,xdp_{i,x}dpi,x 表示 i 从i开始,且分裂后的队首是x的序列的个数
那么就可以写出转移:
dpi+1,x−>dpi,ai/ceil(ai/x)dp_{i+1,x} -> dp{i,a_i/ceil(a_i/x)}dpi+1,x−>dpi,ai/ceil(ai/x)
然后发现 ai/ceil(ai/x)a_i/ceil(a_i/x)ai/ceil(ai/x) 的取值不超过 ai\sqrt a_iai 种
用vector玩一下杂技就行了
为了优化空间,需要滚动数组