ABC 423
做题顺序a->b->c->d->c->d->c->e->d,吃了C*3+D*6共9发罚时,全部WA*1
C把一个减号左右两边写反导致出现负数爆炸了
D:能用prique别用set,常数大还会把元素去重,元素去重是很关键的性质
代码源国庆 9/27 (Day 1)
B:两个序列交替进行取当前值和给定值的最小值操作,先考虑D全为0的子问题,枚举l最后一次对答案造成影响是在哪里,值域的数量变成 O ( n ) O(n) O(n) 级别,考虑倒推,枚举最后的答案。
对于原问题可以提前求出每个位置作为最后一次对答案有影响时,答案最终的结果, l i = l i + ∑ j = i + 1 n d j l_i=l_i+\sum\limits^n_{j=i+1}d_j li=li+j=i+1∑ndj,将D数组优化掉,原题目转化为D全为0的子问题。
国庆 10/3 Day 3
D:对于边 ( u , v ) (u,v) (u,v) 有 ∣ u − v ∣ ≤ 10 |u-v|\leq10 ∣u−v∣≤10,正解分治。考虑如果我们对图中连续 10 10 10 个点 [ x , y ] [x,y] [x,y] 以每个点为起点跑一次最短路,那么对于查询 ( a , b ) , a ≤ y , b ≥ x (a,b),a\leq y,b\geq x (a,b),a≤y,b≥x,两点的最短路径必定经过 [ x , y ] [x,y] [x,y] 中任意一点,枚举其中每一个点 k k k 并求 d i s ( k , a ) + d i s ( k , b ) dis(k,a)+dis(k,b) dis(k,a)+dis(k,b) 最小值就好;
对于 a , b a,b a,b 两点都在左边或都在右边的话,若经过中间点就再求一次上面的答案,若不经过则说明这条路径只经过左边或者只经过右边,直接分治即可。
国庆 10/4 Day 4
C:最终的答案相当于对每个 a i a_i ai 决定它的 + − +- +− 值,保证 + − +- +− 标号合法的情况下的最大值。必须发现的性质:设 m m m 等于取 − - − 的元素的个数,则必须有 ( n + m ) m o d 3 = 1 (n+m)\bmod3=1 (n+m)mod3=1;用归纳法证明,若存在某个合法的符号序列 ( n , m ) , ( n + m ) m o d 3 = 1 (n,m),(n+m)\bmod3=1 (n,m),(n+m)mod3=1,我们则一定能找到两个合法的符号序列,使得这两个序列取反合并后(对应题目的“之和的相反数”)等于该序列;因为若这两个区间为 ( n 1 , m 1 ) , ( n 1 + m 1 ) m o d 3 = 1 , ( n 2 , m 2 ) … (n_1,m_1),(n_1+m_1)\bmod3=1,(n_2,m_2)\dots (n1,m1),(n1+m1)mod3=1,(n2,m2)…,两个区间取反合并后也就是 ( n 1 + n 2 , ( n 1 − m 1 ) + ( n 2 − m 2 ) ) , 2 n 1 − m 1 + 2 n 2 − m 2 = 3 n 1 − ( n 1 + m 1 ) + 3 n 2 − ( n 2 + m 2 ) = − 2 ≡ 1 ( m o d 3 ) (n_1+n_2,(n_1-m_1)+(n_2-m_2)),2n_1-m_1+2n_2-m_2=3n_1-(n_1+m_1)+3n_2-(n_2+m_2)=-2\equiv 1 \pmod{3} (n1+n2,(n1−m1)+(n2−m2)),2n1−m1+2n2−m

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



