A. Prison Break
题目传送门:
题目大意:
有一个n*m的监狱,每一个格子有一个犯人,坐标为( r , c )的格子有一条逃生通道,犯人每一秒可以向相邻的一个格子移动,问所有犯人到达逃生通道最久需要多少秒。
思路:
判断监狱四个角上的犯人到达逃生通道的时间即可
AC Code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m,r,c;
scanf("%d%d%d%d",&n,&m,&r,&c);
int res=0;
res=max(res,abs(1-c)+abs(1-r));
res=max(res,abs(n-r)+abs(m-c));
res=max(res,abs(1-r)+abs(m-c));
res=max(res,abs(n-r)+abs(1-c));
printf("%d\n",res);
}
//system("pause");
return 0;
}
B. Repainting Street
题目传送门:
B. Repainting Street
题目大意:
有n个房子,每个房子有自己初始颜色ci。画家每次可以画连续的k个房子,可以画成任意颜色,或者不变。问最少画几次可以使所有的房子都变成一样的颜色。
思路:
我们首先看题目的数据范围,初始颜色最多只有100种,房屋最多有1e5。所以我们枚举每种颜色,进行操作然后取小即可。
AC Code
#include<bits/stdc++.h>
using namespace std;