先对各种情况进行特判,可分为n==1 || m==1 ; n==2 || m==2 ; n和m完全无规律四种情况进行讨论
————————————————————————————————————————————————————————————————————————
下面是程序
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long qz(long long x)
{
if(x%8==2)return (x+2)/2;
if(x%8==4)return (x+4)/2;
if(x%8==6)return (x+2)/2;
return x/2;
}
int main(){
freopen("psycho.in","r",stdin);
freopen("psycho.out","w",stdout);
long long n,m,t;long long ans;
cin>>t;
for(int i=1;i<=t;i++){
ans=0;
scanf("%d%d",&n,&m);
if(n==1){cout<<m<<endl;continue;}
if(m==1){cout<<n<<endl;continue;}
if(n==2 || m==2){ans=n*m;cout<<qz(ans)<<endl;continue;}
ans=(n*m+1)/2;
cout<<ans<<endl;
}
return 0;
}