提高组模拟赛(三)游记
为啥我要写这玩意儿呢?我也不知道 ????
比赛的传送门,
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