记4道弱智题
今天集训模拟赛,3h,喜提110pts/400pts。
第一题:反复覆盖区间,求各点处的最小值。
上来想了差分,记录左端点等方法,越写越长。20min跳了,慌。
第二题:模拟题,ipv6压缩。
看起来不难,开始写,先去掉全0串,再去掉前导零,最后处理输出,样例全过了,我觉得能A。
第三题:画图觉得是最大生成树,然后就想起来了货车运输,原题!就开始写树上ST表。我觉得能A
第四题:一开始以为是容斥+背包,就是硬币购物那种,但不是。想状压,预处理xum[i][state],vum[i][state],做背包,假。
中途好几次回去改T1,心态逐渐爆炸。
最后开始写线段树,线段树build忘了赋值tree[u].l和tree[u].r,re十分钟。
过不了,怎么都不对。也懒得写暴力了,直接放了。
最后有信心的T2、T3都炸了:40+70。
一看,T3数组开小了,cao。
第二题总结:
懒标记下传和以往不同,不是区间覆盖问题,而是区间动态更新最小值。
所以要分清val的更改和tag的传递。
如果区间合适,那么可以考虑比较当前区间的最小值和要求更新的值;将这个更新值和tag比较,再下传(要判0)。
pushdown的部分:左区间的值要和tag比较再更新;左区间的tag和u的tag比较,再更新(要判0)。更新(传递)的是.tag而不是.val
注:这道题甚至可以不要pushup(),为什么呢?
应该欣赏一下wyk的做法
T3使得100->40的关键在与judge函数没写返回值!cao
bool judge(int l, int r)
{
for (int i = l; i <= r; i++) {
if (str[i] != "0000")
return false;
}
return true;// 这句
}
还有
总结:
基本功还是太差了,正式比赛要是这样,那得多遗憾!巩固基本功。