传送门:CF-1358A Park Lighting
测试样例:
input
5
1 1
1 3
2 2
3 3
5 3
output
1
2
2
5
8
题目大意:
有n* m的矩阵,可以在分割线上放灯笼。一个灯能点亮附近两个正方形(如果在边界,则仅点亮一个正方形)。找到点亮所有正方形所需的最少数量的灯。
思路:
行或列至少有一个是偶数时,都可以使用一个灯笼点亮附近的两个正方形,即最少灯笼数为n* m/2。
行和列都是奇数,则必定会剩下一个正方形需要单独的一个灯笼点燃,即最少灯笼数为n *m/2+1
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
if(n%2==0||m%2==0)
printf("%d\n",n*m/2);
else
printf("%d\n",n*m/2+1);
}
return 0;
}