A. 表达式密码
观察样例,发现答案就是将减法拆为一个减法和多个加法,于是就完了。
B. 电压机制
发现问题是认为一条边相邻的两个点颜色相同并不考虑这条边,问图能否二分图染色。
暴力做法是$O(nm)$的。
仔细想想就可以发现:
对于奇环,不能二分图染色,所以必须选择奇环上的边。
对于偶环,可以二分图染色,但如果选择了偶环上的边必死。
所以问题是有多少边被所有奇环包含并不被偶环包含。
部分分提示可以生成一棵树,并考虑所有的非树边形成的环。
非树边与树边形成环的贡献是比较好考虑的,树剖/树上差分等一些方法都可以维护。
然而非树边和非树边也可能形成环。
所以大力分类讨论,
1.两个非树边分别与树边形成奇环,那么两个非树边形成偶环。
因为两个奇环保证了只有重叠部分才有贡献,不考虑这个偶环是正确的。
2.两个非树边分别与树边形成偶环,那么两个非树边形成偶环。
两个偶环已经保证了所有树边都死了,不考虑这个偶环是正确的。
3.两个非树边分别与树边形成奇环和偶环,那么两个非树边形成奇环。
(1).奇环在上偶环在下,只有形成奇环的非树边可能会活,至于这个贡献留到下面。
(2).偶环在上奇环在下,偶环必死,原奇环仍然被现在形成的奇环包含。
可以得出结论是:非树边与非树边形成的环,如果不去考虑,对答案没有影响。
所以一遍$dfs$,保证每一条非树边都是返祖边,将会非常好做。
非树边对答案也可能产生贡献,但产生大小为1的贡献仅当非树边只与树边形成一个奇环。
因为一旦产生两个奇环,每一条非树边都不可能被覆盖两次。
C. 括号密码
对于区间不相交的情况:
当每个括号对整体造成$2$的贡献的时候,这个括号交换是不会亏的。
对于每一个区间,处理出左侧应该加入的左括号个数,右侧应该加入的右括号个数。
首先尝试自行交换解决。
解决不了的部分尽量与其它区间交换解决。这个交换可以用一个变量维护。
如果区间存在相交但不存在覆盖:
由一些前缀和关系,中间的交集必是平衡的。所以可以拆分为三个区间。
如果区间存在覆盖:
中间的一个区间是平衡的,大区间减去小区间的部分是平衡的。
总体来说,将每个覆盖区间集合相同的点视作一个序列。分别统计每个序列的答案就可以了。