地址: https://gmoj.net/senior/#contest/home/3351
T1: 异或 (inception)
T2: 计数(interwoven)
T3: 优化(inaugurate)
总结
一看到 T 1 T1 T1 就觉得很眼熟,瞪了两眼后:“噢噢!这道题我不是写过题解的吗?结论我还记得……”
赛后发现是半年前做过的 gmoj 6829. 【2020.10.25提高组模拟】异或 ,两道题除了读入之外,其余部分一模一样。我的题解: gmoj 6829 / 7038. 异或 题解 。
回忆起结论后又证明了一下,然后就用 trie 优化 D P DP DP 切掉了它。
T 2 T2 T2 我觉得看起来不太可做,就跳到了 T 3 T3 T3 。
先分类讨论一下吧:
- 如果 [ l , r ] [l,r] [l,r] 中 非负整数个数 < x <x <x ,那么 a n s = ans= ans= 非负整数之和 + + + 前 ⋯ \cdots ⋯ 大的负数 ;
- 否则,如果 [ l , r ] [l,r] [l,r] 中 非负整数连续块个数 ≤ x \le x ≤x ,那么 a n s = ans= ans= 非负整数之和 ;
- 否则,那么 a n s = ans= ans= 前 ⋯ \cdots ⋯ 大的非负整数连续块之和 。
第一种情况可以用 莫队 + 权值线段树 维护;
第二种情况 前缀和 即可;
第三种情况可以用 莫队 + 权值线段树 维护。
结果发现样例没过,原来是第三种情况我忽略了当 k k k 很小时,可能会出现选择 100 , 100 , − 1 , 100 , 100 100,100,-1,100,100 100,100,−1,100,100 这样的段的情况。
只能把第三种情况改成暴力 D P DP DP ,但是到比赛结束都没有调出来,第一种情况和第三种情况的代码都有问题。最后只拿到了 3 3 3 分。
场上最长代码,人口普查分数(红线框起来的就是我):
总结:
- 要坚持对做过的题和比赛进行总结;
- 比赛时不要硬刚一道题,如果是第一眼上去不能拿太高分的多半是切不掉的,这时就要想办法多拿分。