开始没细想,就直接暴搜,当然就TLE了。后来还想是DP,但会MLE。
没办法看了别人的解法,原来是找规律题。。囧了
规律就是:m行n列,如果m或者n是偶数(或同时都是偶数),则一定有m*n个1的解法。否则,m和n都是奇数,则最短解法为(m*n-1)个1加1.41
#include <stdio.h>
int main()
{
int nCase = 0;
scanf("%d", &nCase);
getchar();
for (int i = 1; i <= nCase; i++)
{
int m, n;
scanf("%d %d", &m, &n);
float ret = 0.0;
if (m % 2 == 0 || n % 2 == 0)
{
ret = m * n;
}
else
{
ret = m * n - 1 + 1.41;
}
printf("Scenario #%d:\n%.2f\n\n", i, ret);
}
return 0;
}