依旧罚时满满的一场训练赛。
比理论上界少两题,E是个大模拟,我们仨都懒得动(bushi,然后G是个我们仨都假了的树形背包。
开始口胡吧!
A题:是个栈,支持push、pop,栈内元素最值。同时维护两个栈,一个单调,一个不单调,然后push的时候如果单调就push两边,不单调就只push一边,pop的时候,如果俩top一样,就pop两边,不然pop一边。
论为什么会跪三发
第一发:“这不是个Multiset吗”——卢姥爷,然后当场去世TLE2
第二发:“这总不能WA了吧”——卢姥爷,然后当场去世WA2,发现是
a
n
s
x
o
r
=
n
o
w
m
a
x
∗
i
ans \ \ xor = nowmax*i
ans xor=nowmax∗i的时候,没开LL
第三发:“冲冲冲冲冲冲”——liangs333,然后当场去世WA2,发现是用%d输出了LL。
不要让卢姥爷用printf写题.jpg
B题:不知道是个啥算几题,ghj搞了搞就过去了,甚至node的x和y都是int的点,震撼ls一整年。
C题:凯撒密码签到题。
论交上去之后为啥会WA2 liangs333瞟了一眼代码。
“这玩意你减下去怕不是成负的了”——liangs333
“woc他好像真的可以成负的”——ghj1222
此处应有表情包。
D题:大鹅坐飞机。
“我们动态选鹅,谁起立谁是鹅。”——liangs333
E题大模拟,八题后大家都很咸,隧咕咕咕。
F题,显然排序floyd,为什么会WA三发呢?
“我觉得你这思路很正确啊”——卢姥爷
“我也觉得他很正确啊,但是他咋wa了呢”——liangs333
第一发:排序之后ord[i]写成了i
第二发:论离线询问之后处理到那个询问直接输出是怎样一种智障。
第三发:我也不知道改了个啥,然后就满怀梦想冲上去了。
wssb。
G题是个我们仨都假了的树上背包,ghj考虑到了按边统计贡献,但是没想出来这dp状态,卢姥爷估计是被那个假的复杂度
O
(
n
k
2
)
O(nk^2)
O(nk2)吓到了,一直在琢磨优化,没敢动手。
那么liangs333在干啥呢?
他还在懵逼为什么这题可以一起dp。
H题:
“这不是上次那个打怪字典序的题吗?A一刀攻击力+1,这咋做啊”——liangs333
三十分钟后
“你读题读假了!这是对于同一个怪,第一刀1,第二刀2!砍A怪第一刀1,再砍B怪,还是1!”——ghj1222
这波是没看清楚这破甲buff是在刀上还是在怪上。
黑色切鸽者 vs 均衡之刃(梦幻联动
算一下每个怪的去世值(被A多少下去世,记为
T
i
T_i
Ti,攻击力记为
A
i
A_i
Ai
对于俩怪,
A
1
T
1
+
A
2
(
T
1
+
T
2
)
A_1T_1 + A_2(T_1+T_2)
A1T1+A2(T1+T2)和
A
2
T
2
+
A
1
(
T
1
+
T
2
)
A_2T_2 + A_1(T_1+T_2)
A2T2+A1(T1+T2)比一比大小,就知道先锤死谁了。
弄个cmp,排个序,sort一发,一个一个锤过去。
写之,过样例,交上去光速WA2。
发生甚么事了。
“要不ghj你帮我重置一下吧。”——liangs333
25min后
“重置的过了。”——ghj1222
“蛤蛤蛤发生了啥?你是按照我那个思路写的吧”——liangs333
“一模一样啊”——ghj1222
“妈的绝了”——liangs333
“妈的绝了”——卢姥爷
K题
不知道是个啥,卢姥爷拿到之后光速秒掉然后写了,调了调交上去WA2,然后再调了调就过了。赛后听说是个36个点的独立集计数题,折半枚举。
卢姥爷牛逼!
L题
给定一个不一定是排列的东西,求有多少个子区间满足“排序后数字连续”,1 1 2 3 4 4 3也可。
枚举右端点,左端点扔线段树上,for i为右端点,统计每次的可行左端点。
假装他是个排列,那个柿子化一化,
m
a
x
−
m
i
n
=
r
−
l
max - min = r - l
max−min=r−l。
移项
m
a
x
−
m
i
n
−
r
+
l
=
0
max-min-r+l=0
max−min−r+l=0
惊奇的发现这玩意他非负,而且
m
i
n
和
m
a
x
min和max
min和max可以上单调栈搞一搞,于是,min max r区间加,l初始化。
于是快乐线段树,维护最小值和最小值个数。
那么不是排列怎么整呢。
考虑
k
k
k上一次出现在
p
r
e
k
pre_k
prek的位置。
对于所有
l
∈
[
1
,
p
r
e
k
]
l \in [1,pre_k]
l∈[1,prek],这新的k加了根没加没啥差别,该行就行,不该行就不行。
对于所有的
l
∈
[
p
r
e
k
]
l\in[pre_k]
l∈[prek],上一个
k
k
k没影响。
于是,排列版本里面,每次i++,有一个
a
d
d
(
r
o
o
t
,
L
s
i
d
e
=
1
,
R
s
i
d
e
=
n
,
v
a
l
=
−
1
)
add(root,Lside=1,Rside = n,val =-1)
add(root,Lside=1,Rside=n,val=−1),即维护那个r。
非排列版本,改成
a
d
d
(
r
o
o
t
,
p
r
e
k
+
1
,
i
,
−
1
)
add(root,pre_k+1,i,-1)
add(root,prek+1,i,−1)就行了。
然后线段树单调栈切之。
“看我给你们表演切数据结构”——liangs333。
写的时候感觉轻松+愉快。
youngk和bangbang下了软B过来玩了。
“你这inf怎么是123123123”——youngk
此时的liangs333还没发现问题的严重性。
写,调,冲,光速MLE2。
“这波一定是RE了”——liangs333
让卢姥爷打了个拍,发现果然光速RE,甚至在n=10的时候这破玩意就凉了。
怎么死的呢。
我们注意到这数据范围是
a
i
≤
1
0
9
a_i\le10^9
ai≤109
而
123123123
=
1.23
∗
1
0
8
123123123 = 1.23*10^8
123123123=1.23∗108
卧!槽!
震撼liangs333一整年。
论这H题是怎么假的。
“你看看你的HP和ATK是不是输入反了。”——ghj1222
“woc他好像真的反了???这玩意能过样例???”
INPUT 1
2
3
1 1
2 2
3 3
3
3 1
2 2
1 3
抱歉这样例是对称的,他tm真的能过。