多校联考 Day 7 总结
总结
\qquad
一次绝妙的阿克机会,可惜没把握住……
时间安排
8 : 00 ∼ 8 : 10 \qquad 8:00\sim 8:10 8:00∼8:10 看题。看了 T 1 T1 T1 发现好像以前写过,直接秒了。
8 : 10 ∼ 9 : 30 \qquad 8:10\sim 9:30 8:10∼9:30 看 T 2 T2 T2。发现 T 2 T2 T2 也挺水,但是没有 T 1 T1 T1 那么水,就先通读了题面。发现今天的题很平和,打算一道一道来。 T 2 T2 T2 一眼贪心,但是贪心策略想的有一点复杂。赛时考虑到这一策略可以用线段树实现,时间复杂度大约 O ( 2 m l o g n ) O(2m\,log\,n) O(2mlogn),有点卡但是应该可过,就写了,调了一小会后过了大样例,但是跑了 5 s 5s 5s,想着去自定义测试上测测,但是发现时限 10 s 10s 10s,而且自定义测试放不进大样例,就选择了直接交。
9 : 30 ∼ 10 : 30 \qquad 9:30\sim 10:30 9:30∼10:30 开 T 3 T3 T3,第一眼以为是个大摩你,不是很想写,就看了 T 4 T4 T4。这时注意到 c z l czl czl 已经交了 T 4 T4 T4,想着可能不是很难(毕竟交的很快),但是看了两眼感觉还是无思路,就回头看了 T 3 T3 T3。看着什么复数乘法,感觉很难,慢慢推……突然发现题目中的 a + b i = ( q r + q i × i ) ( − 1 + i ) + r a+b_i=(q_r+q_i\times i)(-1 + i)+r a+bi=(qr+qi×i)(−1+i)+r,想着展开式子,发现可以直接解 q r , q i q_r, q_i qr,qi,于是处理了一下本题唯一的难点:读入后就过了。
10
:
30
∼
12
:
00
\qquad 10:30\sim 12:00
10:30∼12:00 想着还有一个半小时,但是只剩一个
T
4
T4
T4 了,那今天不是随便阿克? 推了一小会式子发现很难在
O
(
n
l
o
g
n
)
O(n\,log\,n)
O(nlogn) 的时间复杂度内处理出来,考虑先打暴力。但是发现这个式子对于
O
(
n
2
)
O(n^2)
O(n2) 的复杂度好像也不是很好实现,就想着能不能用其他方式来统计。发现不太会,但是此时发现
T
2
T2
T2 时限缩短为
3
s
3s
3s,于是搬出来了
i
o
b
u
f
f
iobuff
iobuff,卡了个小常,在本地跑大样例
4
s
4s
4s 的情况下安慰自己评测及跑得快就交了。然后继续推
T
4
T4
T4,猜测是
d
p
dp
dp,但是不会写,就寄了,直到结束。
考试结果
100 + 30 + 100 + 0 = 230 p t s , R a n k : + ∞ \qquad 100+30+100+0=230pts,\;Rank:+\infty 100+30+100+0=230pts,Rank:+∞, T 2 T2 T2 线段树果然是跑不过去。
考试总结
\qquad 菜啊,还得多练……
\qquad T 2 T2 T2 的贪心策略就是正解,但是因为没往下深想所以没想到更简洁的实现方法。而且, T 2 T2 T2 以前作为模拟赛的题考过,但是我没想起来! 以前总结下来的经验还是要经常复习。
\qquad T 4 T4 T4 连第一步都没想到,一直在往 2 d 2^d 2d 上想,没有往子树上想,导致最基础的 d p dp dp 也没想到,很崩。以后遇到一道无思路的题,试思路的时候不能堵到一条路上,要迭代加深,不能一味 d f s dfs dfs。
题解
T1
\qquad k ≤ 1 0 6 k\leq 10^6 k≤106 显然可以直接枚举倍数。
\qquad k ≤ 1 0 12 k\leq 10^{12} k≤1012 可以考虑将 k k k 分解质因数, k = p 1 c 1 p 2 c 2 … k=p_1^{c_1}p_2^{c_2}\dots k=p1c1p2c2…,那么最小的 n = p 1 ⌈ c 1 2 ⌉ p 2 ⌈ c 2 2 ⌉ … n=p_1^{\left \lceil \frac{c_1}{2} \right \rceil }p_2^{\left \lceil \frac{c_2}{2} \right \rceil }\dots n=p1⌈2c1⌉p2⌈2c2⌉…。最后判断 n n n 是否能整除 k k k 即可。
T2
\qquad 考虑一条边被删除当且仅当这条边两端点之一被删除。假设这条边连接 x , y x,y x,y,那么这条边带来的贡献要么是删 x x x 带来 v y v_y vy,要么是删 y y y 带来 v x v_x vx。也就是说, ∑ i = 1 m m i n ( v x i , v y i ) \sum_{i=1}^{m}min(v_{x_i}, v_{y_i}) ∑i=1mmin(vxi,vyi) 一定是答案的一个下界,答案不可能比它小。
\qquad 现在,我们考虑能否构造出一个删除方案使得答案等于它。我们考虑给每一条无向边赋方向:让点权大的点指向点权小的点。若两点点权相同,可以考虑让编号大的点指向编号小的点。这样,我们构造出的有向图一定是一个 D A G DAG DAG。跑出来的拓扑序就是我们删点的顺序。所以,我们证明了一定可以构造出一个删点方案,使得 a n s = ∑ i = 1 m m i n ( v x i , v y i ) ans=\sum_{i=1}^{m}min(v_{x_i}, v_{y_i}) ans=∑i=1mmin(vxi,vyi)。在读入的时候加一下即可。
T3
\qquad 乍一看,本题好像是个大摩你。但是,发现了 a + b i = ( q r + q i × i ) ( − 1 + i ) + r a+bi=(q_r+q_i\times i)(-1+i)+r a+bi=(qr+qi×i)(−1+i)+r 这一式子后,一切的问题就迎刃而解。我们把式子拆开:
a + b i = ( q r + q i × i ) ( − 1 + i ) + r a+bi=(q_r+q_i\times i)(-1+i)+r a+bi=(qr+qi×i)(−1+i)+r
a + b i = − q r − q i × i + q r × i − q i + r a+bi=-q_r-q_i\times i+q_r\times i-q_i+r a+bi=−qr−qi×i+qr×i−qi+r
a + b i = ( r − q r − q i ) + ( q r − q i ) × i a+bi=(r-q_r-q_i)+(q_r-q_i)\times i a+bi=(r−qr−qi)+(qr−qi)×i
a = r − q r − q i , b = q r − q i a=r-q_r-q_i,b=q_r-q_i a=r−qr−qi,b=qr−qi
q r = b − ( a + b − r ) 2 , q i = − ( a + b − r ) 2 q_r=b - \frac{(a + b - r)}{2}, qi = -\frac{(a + b - r)}{2} qr=b−2(a+b−r),qi=−2(a+b−r)
\qquad 所以每次让 q r , q i q_r,q_i qr,qi 成为新的 a , b a,b a,b,递归求解即可。
\qquad 本题唯一的码量在于处理读入时的实部,虚部。
T4
\qquad 首先,想想朴素版怎么写:枚举 x , y x,y x,y 子树中的节点,两两配对成一条路径。写成式子就是: ∑ i = 1 s z e x ∑ j = 1 s z e y 2 d i s ( x , y ) + d i s ( i , x ) + d i s ( j , y ) \sum_{i=1}^{sze_x}\sum_{j=1}^{sze_y}2^{dis(x,y)+dis(i,x)+dis(j,y)} ∑i=1szex∑j=1szey2dis(x,y)+dis(i,x)+dis(j,y),考虑化简式子:
∑ i = 1 s z e x ∑ j = 1 s z e y 2 d i s ( x , y ) + d i s ( i , x ) + d i s ( j , y ) \sum_{i=1}^{sze_x}\sum_{j=1}^{sze_y}2^{dis(x,y)+dis(i,x)+dis(j,y)} ∑i=1szex∑j=1szey2dis(x,y)+dis(i,x)+dis(j,y)
= ∑ i = 1 s z e x ∑ j = 1 s z e y 2 d i s ( x , y ) × 2 d i s ( i , x ) × 2 d i s ( j , y ) \sum_{i=1}^{sze_x}\sum_{j=1}^{sze_y}2^{dis(x,y)}\times 2^{dis(i,x)}\times 2^{dis(j,y)} ∑i=1szex∑j=1szey2dis(x,y)×2dis(i,x)×2dis(j,y)
= 2 d i s ( x , y ) ∑ i = 1 s z e x ∑ j = 1 s z e y 2 d i s ( i , x ) × 2 d i s ( j , y ) 2^{dis(x,y)}\sum_{i=1}^{sze_x}\sum_{j=1}^{sze_y}2^{dis(i,x)}\times 2^{dis(j,y)} 2dis(x,y)∑i=1szex∑j=1szey2dis(i,x)×2dis(j,y)
= 2 d i s ( x , y ) ∑ i = 1 s z e x 2 d i s ( i , x ) × ∑ j = 1 s z e y 2 d i s ( j , y ) 2^{dis(x,y)}\sum_{i=1}^{sze_x}2^{dis(i,x)}\times \sum_{j=1}^{sze_y}2^{dis(j,y)} 2dis(x,y)∑i=1szex2dis(i,x)×∑j=1szey2dis(j,y)
\qquad
化简到这一步,我们不妨设
f
x
=
∑
i
=
1
s
z
e
x
2
d
i
s
(
i
,
x
)
f_x=\sum_{i=1}^{sze_x}2^{dis(i,x)}
fx=∑i=1szex2dis(i,x),那么答案就是
f
x
×
f
y
×
2
d
i
s
(
x
,
y
)
f_x\times f_y\times 2^{dis(x,y)}
fx×fy×2dis(x,y)。
f
f
f 数组显然可以直接树形
d
p
dp
dp 求。但是,我们发现:当
l
c
a
(
x
,
y
)
=
x
/
y
lca(x,y)=x/y
lca(x,y)=x/y 时,这一式子是不成立的,如图:
\qquad
若
x
,
y
x,y
x,y 是图中的
2
,
3
2,3
2,3 节点,那么
f
2
f_2
f2 代表的就是青色框中的点到
2
2
2 的距离,但是我们需要的是紫色框中的点到
2
2
2 的距离,即:以
2
2
2 为根的树去除以
3
3
3 为根的子树的点到
2
2
2 的距离。显然可以直接换根
d
p
dp
dp 搞。设
g
x
g_x
gx 表示:
x
x
x 的父亲不走
x
x
x 这一棵子树能走到的点到
x
x
x 的距离和,那么
g
x
=
g
f
a
x
×
2
+
f
b
r
o
×
4
g_x=g_{fa_x}\times 2+f_{bro}\times4
gx=gfax×2+fbro×4。以上图为例,答案便为
f
3
×
g
3
×
2
d
i
s
(
3
,
3
)
f_3\times g_3\times 2^{dis(3,3)}
f3×g3×2dis(3,3)。这一例子不太好,我们拿
1
,
3
1,3
1,3 举例,那么答案为
f
3
×
g
2
×
2
d
i
s
(
2
,
3
)
f_3\times g_2\times 2^{dis(2,3)}
f3×g2×2dis(2,3)。本题就解决了。
\qquad 核心代码:
__EOF__

本文链接:https://www.cnblogs.com/best-brain/p/18006558.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具