代码源国庆模拟赛

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+1ndj,将D数组优化掉,原题目转化为D全为0的子问题。

国庆 10/3 Day 3

D:对于边 ( u , v ) (u,v) (u,v) ∣ u − v ∣ ≤ 10 |u-v|\leq10 uv10,正解分治。考虑如果我们对图中连续 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),ay,bx,两点的最短路径必定经过 [ 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,(n1m1)+(n2m2)),2n1m1+2n2m

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值