T1:
最暴力的当然是建图bfs,但发现边数可以达到(n^2)
考虑当1在每个点的时候,经过操作可以到达的是一个奇数或偶数的连续区间,
省去建边的过程,对于奇偶各开一个set,每次能到的点是一个set上的连续一段
每次删除已经走过的点即可保证复杂度
(set优化建图???)
T2:
首先这个经典的模型有一个结论:
任意交换两行或两列的限制高度,对"方案数/最多块数/最少块数"均没有影响
于是可以对限制从大到小排序
1.当A,B最大值不相等时无解
2.有解时,考虑容斥:
考虑一个简化的问题:
一个a*b的矩形,每个位置的值在[0,s]中,且每行每列的最大值均为s的方案。
设f[i]为至少有i行不满足条件时的方案(需要保证每一列都满足条件)
则:(f[i]=C(a,i)*(s^i*((s+1)^{a-i}-s^{a-i}))^b)
那么方案数就是(sum_{i=0}^a (-1)^i*f[i]);
那么实际的问题呢?
实际上是一个"L"形,用相同的方法容斥即可
T3:
咕咕咕......