Loading

7.10 CW 模拟赛 T3. rev

思路

今天很难受, 就不详细讲了

\(B_{i}=\left| A_{i}-A_{i+1}\right|\), 令 \(C_{i}=\left| A_{i}+A_{i+1}\right|\)
我们可以看成有 \(N-1\) 张卡牌, 每张卡牌正面是 \(B_{i}\), 背面是 \(C_{i}\), 一次操作可以选择两张卡牌翻转

考虑建图, 对于每张卡牌, 连有向边 \(C_{i}\rightarrow B_{i}\), 一次操作可以看成翻转两条边, 你需要让每个点的入度 \leq1

观察每个联通块, 边数必须小于等于点数, 否则根据鸽笼原理无解
如果一个联通块是基环树, 环上要么是顺时针要么是逆时针, 确定环边的方向后剩下的树边的方向就确定了, 只有两种方案
如果一个联通块是树, 枚举哪个节点没有入度, 然后所有边的方向就确定了, 写一个换根 \(\rm{dp}\) 或者稍微用一点数据结构维护下就行


本质上是观察到绝对值变化前后根本没有好的关系
于是考虑直接把变化前后的绝对值分别建出来处理

不存在重复数值在这里恰好适用于图论

总结

两状态之间产生的关系往往用图论表示

posted @ 2025-07-12 19:12  Yorg  阅读(8)  评论(0)    收藏  举报