题目来源:http://acm.nyist.edu.cn/problem/1661

题目描述:

又见面了!PK先生以及ACM集训队所有裁判都准备好迎接这场期待已久的比赛了,你呢?虽然裁判们对这场比赛的难度的看法并不相同,但是大家还是一致认为这场比赛的绝大部分题目比常规积分赛更加有趣。祝你们好运,享受比赛!
作为本次比赛的第一道题目,它将是最容易的。
PK上大学以来一直在苦恼一件事情,就是学校食堂里,互不认识的同学,或者是异性同学之间,都不愿意坐的很近。于是,原本食堂里那么多的座位,却常常让他找不到座位。
假设食堂里的座位是一个NXM的矩阵,当一个座位上有人坐着的同时,他的前后左右(即矩阵的上下左右)将不会再有人愿意去坐。PK在食堂吃不到饭的同时,很好奇,如果大家遵守上面的规定,最多能有多少人能同时吃饭。

输入描述:

第一行输入 T (1 <= T <= 100),代表T组询问。
每组询问只有两个整数 N, M (1 <= N <= 100, 1 <= M <= 100)。

样例输入:
2
2 2
6 4
样例输出:
2
12

签到题,就是这个题开始考虑错了导致我全场倒数第一,果然是我太菜了
按奇偶分类,一种是两个偶数,一种是一个偶数一个奇数,然后两个奇数,发现一个奇数跟一个偶数和两个偶数只要相乘除余2是一样的。

参考代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<map>
#define ll long long
const int N=1e6+5;
#define inf 0x3f3f3f3f
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
int n,m;
int main(){
    int t;
    cin>>t;
    while (t--) {
        cin >> n >> m;
        cout << (n * m + 1) / 2 << endl;
        //或者
        /* if(n*m%2==0){ cout<<n*m/2<<endl; } else{ cout<<n*m/2+1<<endl; } */
    }
    return 0;
}