时间安排
8:30–8:40 读题,T1,T2应该都是 dp ,T3 不知道是个啥。
8:40–9:50 T1,对于部分分有简单的组合计数,考虑正解怎么做。一个想法是容斥,那么需要 dp 出相应的状态,发现不太能做。
9:50–10:20 T2,需要找性质。写个 dfs 后开始打表瞪。然后啥都没瞪出来。
10:20—11:10 T3,发现答案有下界,且上界最多比下界多1 。于是判断一下是否能达到上界就行了。
11:10–12:00 T2,对着打表瞪。
12:00–12:40 T2,由打表发现是个对前缀 max涉及的数做排列,可以简单 dp 通过。
回顾反思
T1:
对数列做前缀和,那么某一区间为 c 即前缀和差为 c,显然模 c 意义下不同的前缀和互不影响,可以分别做。又因为数列元素都为正整数,故前缀和互不相同,且值域较小,映射到数轴上做 dp 就行了。
赛时一直在想怎么设 dp 状态表示出区间的信息,没有注意到前缀和模意义下互不影响的性质。同时没有在意元素为正的条件,忽略了前缀和单调递增的性质。
思考怎么dp以及怎么优化 dp 的时候还是要多找找性质,往往能简化问题。
T3:
注意到了相关性质,不过没有往 trie 上想。
求解可行数值的集合可以用 trie 上若干子树的并表示。
T1属于简单题,应该是要 A 掉的,T3其实也不算太难,即使没想到 T3 正解,也起码应当拿到 100+100+40=240 左右。