YACS 11 月甲题解

https://iai.sh.cn/contest

这把还是简单的,难度对标普及组。

所有题解均口胡。

T1

观察 & 性质

  1. 你扫左端点,然后维护以当前左端点最长的合法子段,显然右端点单不降,因为当你左指针右移时,显然少了一个数,然后你可以求出以每个位置为左端点的最长合法子段的长度。

  2. 考虑区间限制左右端点,且你有每个右端点单不降的性质,因此你只需要找到一个点,使得它及其它之后的最长合法区间都跨过 \(r\),这一部分的贡献很好计算。然后前面的都没跨过,取长度最大值即可。

T2

考虑序列中仅有 2 个字符时的做法。即将对两个各赋权 \(1,-1\),定义一个区间的权值为和的绝对值,求所有区间的最大权值即可。

考虑多个字符,我们钦定 2 个是否正确。

考虑一个序列,但我们没有钦定到其最大,最小,此时算出来的答案不优于钦定到的。

考虑答案序列,我们一定能钦定的到。

所以一定正确。

T3

先考虑缩点后构成 DAG,假如没有逆行的条件的话,显然为 DAG 上带权最长链。

考虑逆行的边一定不会用在强连通分量内(因为你能走完啊。。)

考虑枚举逆行边,\((u,v)\),则其变为双向边。

则现在变成 \(u\) 所在的最长带权链(不经过 \(v\))加上 \(v\) 的权值。

因为你一条链不能走回头路,所以你一定是先走到 \(v\) 然后再走回去最长链的。

需要注意没有逆行边,即原先的最长带权链也要贡献答案。

posted @ 2022-12-16 12:24  FxorG  阅读(62)  评论(1编辑  收藏  举报