A
思路:比较四个角上的点,找出它们中距离(r,c)点的最大值
code
#include <bits/stdc++.h>
using namespace std;
int t,n,m,r,c;
int main()
{
cin >> t;
while(t--)
{
scanf("%d %d %d %d", &n, &m, &r, &c);
cout << max(max(r+c-2, n+m-r-c), max(n-r+c-1, m-c+r-1)) << '\n';
}
return 0;
}
B
思路:
比较:若把每个位置的颜色都改为c,花费多少天?然后保留最小值.
时间复杂度O(n*c)
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int t;
int n,k,c[N];
int main()
{
cin >> t;
while(t--)
{
int res = 100005;
cin >> n >> k;
for(int i=1;i<=n;i++)
cin >> c[i];
for(int i=1;i<=100;i++)
{
int x = 0;
for(int j=1;j<=n;)
{
if(c[j]==i)
{
j++;
continue;
}
else
{
j+=k;
x++;
}
}
res = min(res, x);
}
cout << res << '\n';
}
return 0;
}