2016 Central Europe Regional Contest
A
搜索出每个矩阵处理成字符串形式
如果没有记录过则记录下四个方向的形式
B
C
假设端点为三角形 处理出它到中间第一个正方形或圆形的距离
然后剩余加上剩余区间长度
(如果全是三角形就是加n-1)
底边是n-1
两边长度处理一下两个端点的形状
D
E
F
考虑把两个状态全部拆开来的总操作
但是有一些是根本不用拆的
例如1<2<4<6和1<2<4
只需要对把4从6拿出来即可
把1和2拿出来的操作是无效的
从底向上找最长的相同的链 总操作减去2*(len-1)
G
H
把以每个点为中心能放下的最大正方形边长处理出来
把问题转换为找2点之间的最小权值最大的路径
对每对相邻点连边 建立最大生成树
倍增LCA处理 直接查询2点
http://paste.ubuntu.com/25214944/
I
J
K
总共分为n块
每块都能至少贡献2
分类处理一下
L