窝补药军训啊啊啊啊啊啊啊啊啊啊啊
T1 一眼。
考虑每个形如 ABB...BBC \texttt{ABB...BBC} ABB...BBC 或者 CBB...BBA \texttt{CBB...BBA} CBB...BBA 的特殊子串对答案造成的贡献。显然这两种子串对于包含它的子串都会造成 1 1 1 的贡献,于是我们就算有多少个子串包含他们就是了。设这个特殊子串的两个端点分别是 l , r l,r l , r ,那么显然有 l × ( n − r + 1 ) l \times (n - r + 1) l × ( n − r + 1 ) 个子串包含这个特殊子串,于是把答案加上 l × ( n − r + 1 ) l \times (n - r + 1) l × ( n − r + 1 ) 。
T2 毕特塞特神力!!!!如题面所说,O ( n 3 ω × log n 2 4 ) O(\frac{n^3}{\omega} \times \log \frac{n^2}{4}) O ( ω n 3 × log 4 n 2 ) 是可以过的。
首先,我们有简单的 O ( n 3 ) O(n^3) O ( n 3 ) 区间 dp。设 d p l , r dp_{l,r} d p l , r 表示区间 [ l , r ] [l,r] [ l , r ] 删完的最小代价,转移是平凡的。
然后我们看到 最大值最小,直接想到二分答案。我们二分出来一个 m i d mid mi d 之后,就变成了一个可行性 dp。d p l , r dp_{l,r} d p l , r 表示 [ l , r ] [l,r] [ l , r ] 是否可以在小于 m i d mid mi d 的代价删完。转移和上面的差不多。区别在于:如果 d p l , r dp_{l,r} d p l , r 可行,那么如果 d p r , k dp_{r,k} d p r , k 可行的话,d p l , k dp_{l,k} d p l , k 也可行。这里就可以用 bitset 维护,表现为 dp[l] |= dp[r]。
注意枚举的顺序是 l l l 从大到小,r r r 从小到大。
T3 & T4 没改,军训回来改。
upd: 军训回来也没改
设 d p i dp_{i} d p i 表示从 ( 1 , 1 ) (1,1) ( 1 , 1 ) 走到 ( x i , y i ) (x_i,y_i) ( x i , y i ) 不经过别的障碍点的方案书。转移就是这样:d p i = calc ( x i − 1 , y i − 1 ) − ∑ j = 1 j − 1 d p j × calc ( x i − x j , y i − y j ) dp_{i} = \operatorname{calc}(x_i - 1,y_i - 1) - \sum_{j = 1}^{j - 1}dp_j \times \operatorname{calc}(x_i - x_j,y_i - y_j) d p i = calc ( x i − 1 , y i − 1 ) − ∑ j = 1 j − 1 d p j × calc ( x i − x j , y i − y j ) 。分别表示所有方案,枚举第一个遇到的障碍点以算出不符合的方案。calc ( h , w ) \operatorname{calc}(h,w) calc ( h , w ) 表示马走日在 x x x 轴走 h h h 格,y y y 轴走 w w w 格的方案数。
后日谈 话说这个军训要训 10 10 10 天嘞,浪费我 10 10 10 天的时间啊,少考好多场模拟赛的喔。
日记 周二 6月 03 2025 481 字 · 2 分钟