A.图
先询问一周的边,考虑对于不同于上一个颜色的边,即 ((i-1,i) eq (i,i+1))
将这个 (i) 去掉得到一个新的多边形,如果这个多边形找到了生成树那么无论连哪个边都是行的
实现考虑维护单调栈,每个元素入栈出栈一次,所以总询问不超过 (2n)
栈维护一个相同颜色的多边形,每次新加入元素的时候按颜色弹栈,并维护不同颜色的两个端点 (pre,nxt)
最后栈顶的元素的颜色就是答案颜色,枚举每个点的 (pre/nxt) 输出就完事了
B.边
其实 (2-) 正则图是一个环,(2k-) 正则图有欧拉回路
考虑用在欧拉回路中的顺序将边定向,那么每个点有 (k) 个入点, (k) 个出点(原度数为 (2k))
那么问题就是求一个入点,一个出点的方案,这很二分图,其实是完美匹配
所以套路地拆点,跑网络流,判断最大流是不是 (n),根据有没有流判断是不是连边即可
C.雷
((1),(2),(9)) 手玩,全是阴间玩意儿
((3)) 状压 (dp),记得记录转移点
((4)) 费用流,给 (inf) 的赋大费用,或者上下界都是能过的
((5)) 行之间是独立的,直接贪心
((6)) 对列的限制差分,dlt[m+1]=-col[m]
,然后正负匹配确定每个行的起始终止
对于不够的行,从第一行开始下移尾部元素即可满足
((7)) 直接对着行列,(3 imes 3) 的格子暴力,((10)) 类似做法之后剩下的格子 (2^n) 枚举
((8)) 不知道为啥反正输出杨辉三角就过了,题解写得也很阴间