#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#define ll long long
const int maxn=20;
using namespace std;
int a[maxn][maxn];
ll f(ll x){
if(x%4==0)return x;
if(x%4==1)return x+1;
if(x%4==2)return x+2;
if(x%4==3)return x+1;
}
int main(){
int t;
cin>>t;
while(t--){
ll n,m;
cin>>n>>m;
if(n==2){
cout<<f(m)<<endl;
continue;
}
if(m==2){
cout<<f(n)<<endl;
continue;
}
if(n==1 || m==1)
cout<<n*m<<endl;
else{
cout<<(n*m+1)/2<<endl;
}
}
return 0;
}
心灵终结
发布时间: 2016年7月11日 14:35 最后更新: 2016年7月11日 14:36 时间限制: 500ms 内存限制: 128M
尤里背叛了苏维埃联盟!
尤里具有心灵控制的能力,可以控制我方的士兵攻击同伴。为了避免这种情况,斯大林同志要求你合理地排兵布阵,使得没有两个士兵可以互相攻击。
在这个问题里,你可以认为士兵的攻击范围类似于国际象棋中的马。也即,位置为(x,y)的士兵可以攻击位置为(x±2,y±1)或(x±1,y±2)的士兵。请计算:在 N*M 的棋盘上最多能放置多少个士兵。(当然,两个士兵不能在同一个位置)
第一行,一个整数 T,描述了子测试点的组数。以下 T 行,每行两个整数 N,M,描述了一个棋盘。
对于每个子测试点,输出一行,一个整数,为所求的答案。
复制
2 1 5 2 3
5 4
对于 20%的数据:N*M≤15。
对于 100%的数据:1≤T≤1000,1≤N,M≤10^9。
均匀地,对于总计 50%的数据:数据随机生成。
找呀找呀找规律~~