为啥我要写这玩意儿呢?我也不知道 😂
比赛的传送门,
T
1
\tt T1
T1
考场上的草稿:
若 2x <= y 则 x'=2x
否则 x' = x-(y-x) = 2x-y
等价于 x*2^k 取模 y !我的天哪!
然后就很棒。因为
2
x
=
y
2x=y
2x=y 的时候不能取模。死掉了
40
p
t
s
40pts
40pts 。
T
2
\tt T2
T2
唯一没有爆掉的题目 😢
但是消耗了我很多时间。搞得后面两道题只有
2
h
2h
2h 可用。烦。
T
3
\tt T3
T3
一开始想动态
d
p
\tt dp
dp ,直接自闭。为啥我要想一些不 noip 的算法啊!
然后意识到这是个树剖的垃圾题。淦。结果细节多惨了。
比较重要的是,树剖中线段树维护的
l
,
r
l,r
l,r 不是节点编号,而是
d
f
n
\tt dfn
dfn 。千万注意。
另一个重要细节是,线段树的标记有多个时,顺序很重要 !我以为直接用
v
a
l
=
+
∞
{\tt val}=+\infty
val=+∞ 就可以代替 “ 清空 ” 标记,事实上不行。
而且树剖很不熟练了。最初,我每个节点本身都是一条重链。
所以我把出错的部分拿出来,以此为戒。
if(son[x]) dfs(son[x],tc);
tmp[dfn[i]] = dep[i];
val[o] = min(val[o],v-2*tmp[r]); // 不是 -2*dep[r]
tag[o] = true; // kill them all!
T
4
\tt T4
T4
最近(可能两周前么?)才看到
C
o
l
o
r
a
T
r
e
e
\tt Color\; a\; Tree
ColoraTree 这道题,然后秒懂。
结果勇士的血量不用 long long 直接爆零见祖宗。
int_ hp; scanf("%lld",&hp);
后记
F
r
e
o
p
e
n
\tt Freopen
Freopen 对我说过的:“你会发现其他都是虚的,是假的。只有把代码打出来才是真的。其他都没用,最重要的是
1
h
1h
1h 写完代码、对拍、数据生成器。”
可惜我记性不好。
本文地址:https://blog.csdn.net/qq_42101694/article/details/109248291