csp-s模拟59

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:
  咕咕咕......

posted @ 2019-11-06 21:43  G_keng  阅读(109)  评论(0编辑  收藏  举报