题解 P6131 【[USACO11NOV]Cow Beauty Pageant S】

· · 题解

传送#1

传送#2

思路

解题过程主要可以分为2步:

  1. 读入,将三个斑点依次编号为1,2,3,方法有很多,如 dfsbfs ,这里不细讲了。
  2. 关键步骤,我们知道,对于任意两个斑点,无非只有上图所示的两种情况,因此,我们需要分别计算两种情况改变的最小格子数(以下称为距离)。
    • 第一种,将两个斑点连通至第三个斑点,需要我们分别记录每两个斑点之间的距离,一共就三种情况。
    • 第二种,将三个斑点连至一个不在斑点上的点,我们就可以循环每一个不在斑点上的点,计算距离并求最小值。

计算过程

依次循环每一个点,如果是‘ X ’,那么进行第一种操作;若为‘ . ’,则进行第二种操作。

具体函数实现

写题解不易,点赞再走吧