lightoj1010【规律】

    xiaoxiao2021-03-25  154

    思路: 根据案例的规律其实已经猜的差不多了,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; }

    转载请注明原文地址: https://ju.6miu.com/read-7098.html

    最新回复(0)