啊(莫名感叹)......
今天早上写了写博客就去吃饭了,然而排队到了门口,但是今天早餐竟然免费诶,开心~~
回来考试,上来肛T1,诶二分答案诶(完美错过正解),然鹅码了一个小时(和编译斗智斗勇),终于调过样例
看T3,不会,想了30min,算了打暴力,码完突然想检查T1,回去看,发现疯狂RE,又和vector斗智斗勇,最终获得Wa20的好成绩
还剩30min,看T3,不会,打了暴力扔上去,剩下10min在检查中度过
总分20+20+50=90,rank10,还是很差啊
继续努力
T1:Star Way To Heaven
这题一看非常像二分,二分长度然后用并查集check,这样复杂度是k2logk的(虽然能过)
仔细研究,发现我们要求的就是从上边界到下边界的所有最短路径上的最大边/2
可以用最小生成树,然而只能用prim,因为kruskal复杂度mlogm,而m是n^2级别的
T2:God Knows
线段树维护单调栈的板子题
T3:Lost My Music
%%%exface
将题目中的柿子转成斜率的形式发现我们需要用单调栈维护一个下凸包
然而如果暴力弹盏再复原的话复杂度可被卡至n^2
我们可以用倍增的思想维护单调栈,记录每个点在自己的栈中2^k辈祖先就好了
也可以用树上启发式合并的思想
对于轻儿子暴力弹栈+复原,可以保证复杂度
原文:https://www.cnblogs.com/mikufun-hzoi-cpp/p/11370419.html