lightoj1010【规律】

思路:
根据案例的规律其实已经猜的差不多了,answer=n*m/2;

有一条边是1的情况,也很好判断,answer=n*m;
就是有一条边是2的时候比较隐秘:是连续2*2一块可以填,然后2*2不填,没想出总结的公式,就直接模拟了。

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
typedef long long LL;
int main()
{
    int cas=1,T;
    int n,m;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        int ans=(n*m+1)/2;
        if(n==1||m==1)
            ans=n*m;
        else if(n==2||m==2)
        {
            ans=0;
            n=n*m;
            while(n>8)
            {
                ans+=4;
                n-=8;
            }
            if(n>=4)
                ans+=4;
            else
                ans+=n;
        }
        printf("Case %d: %d\n",cas++,ans);
    }
    return 0;
}


posted @ 2017-03-08 21:39  see_you_later  阅读(248)  评论(0编辑  收藏  举报