A.
这类题没有做过,第一次做,很有新意。
染色的时候,如果一个点的出边中有2个同色点,那么就有一条路中有三个同色点,是不合法的。
不妨先把所有点染成一个颜色,然后再选点染成另一个颜色。
使用一个队列,先把所有的点入队。
每次取出队头 \(u\) ,如果发现他不合法:
1.自己颜色取反
2.扫描所有出边,出边到的点 \(v\) 不合法,把 \(v\) 入队。
为什么这么做呢?如果 \(u\) 的颜色改变了, \(v\) 的颜色就有可能改变。
队列最后清空的时候,一定是合法的。
B.
与置换群无关系,考虑到旋转180度只是交换了两列的位置。
对于一列,起始位置->目标位置距离为奇数,则上下翻转;偶数则不翻转
check是否合法的时候map随便搞搞好了。
map搞搞T了,操蛋,发现不用map
考虑到,一次翻转只会减少一个逆序对。那么数数逆序对就行了。树状数组, \(O(nlog_2n)\)
C.
题解给的是枚举每一个矩形,然后枚举切割线.
类似于二维区间DP
想区间dp先枚举区间长度一样,
二维区间DP先枚举矩形的长宽,然后再枚举左上角坐标。得到右下角坐标。
\(f_{u,d,l,r}\) 初始是 \(max(d-u+1,r-l+1)\)
\(f_{u,d,l,r}\) 对 \(f_{u,d,l,s} + f_{u,d,s+1,r}\) 取 \(min\)
\(f_{u,d,l,r}\) 对 \(f_{u,s,l,r} + f_{s+1,d,l,r}\) 取 \(min\)
答案即为 \(f_{1,n,1,n}\)
时间复杂度 \(O(n^5)\) ,空间复杂度 \(O(n^4)\)
D.
先鸽.(不会)