摘要:
学校的作业题。 非常好题目,思考过程非常自然。 CF2114G 首先如果数组中有相邻的数相等,直接输出NO。 然后探讨一下合并操作性质:只有可能发生在数组边缘。发现一定是先合成一个中间的数,然后由内向外依次合成。 例如给出的数组是[1,2,3],那我们可以先合成中间的 \(2\),然后再合成两边的数 阅读全文
学校的作业题。 非常好题目,思考过程非常自然。 CF2114G 首先如果数组中有相邻的数相等,直接输出NO。 然后探讨一下合并操作性质:只有可能发生在数组边缘。发现一定是先合成一个中间的数,然后由内向外依次合成。 例如给出的数组是[1,2,3],那我们可以先合成中间的 \(2\),然后再合成两边的数 阅读全文
posted @ 2026-02-21 11:02
GE9x
阅读(1)
评论(0)
推荐(0)

做题遇到了一个 trick,想了两天,求助教练,LLM 无果后,在大佬的帮助下明白了。 考虑以下 Manacher 代码的改版: int n=s.size(),C=0,R=-1; vector<int> p(n); for(int i=0;i<n;i++){ if(i<=R){//就是这样收缩 in
tarjan 老爷爷太厉害啦! tarjan 算法,对于初学者,属于一种较难理解的算法,做一些笔记。 割点(无向图) 什么是割点? 删去这个点,原本的点所在的连通块会分成几个连通块,那这个点就叫割点。 这张图片最中间的点就叫割点。 我该怎么求割点? 直接对着图像想太费劲了,我们来尝试建模。如果把这个
P14301 我太菜了,这题花了我两天才写出来。 直接维护序列好像不是很好维护,但是我们可以考虑维护一下这个序列的轮廓,就是这个。 其实这玩意儿就是 \(\min(premax(i),sufmax(i))\),我们暂且把它叫 \(f_i\)。 为什么要选择维护这东西呢?不难发现,查询的时候,答案就是
浙公网安备 33010602011771号