• 【Codeforces Round #645 (Div. 2) A】 Park Lighting


    题目链接

    【题目翻译】

    其实就是让你用一个1*2(可以缩小为1*1)的方块去填充整个n*m的方格。 问你最少需要多少个方格。

    【题解】

    如果长和宽某一个是偶数,那么显然可以让长为2的边顺着那个方向摆放。

    刚好需要(n/2*m)个,也即(n*m/2)

    如果都是奇数的话,我们可以截出来一个长度为奇数的,宽为1的一列,然后让那一列竖着填。

    ((n-1)/2+1)个,然后剩下的(n*(m-1))的,m-1肯定是偶数,所以答案是((m-1)/2*n)

    总计((n-1)/2+1+(m-1)*n/2=(n*m+1)/2).

    所以直接输出((n*m+1)/2)就好,向下取整。

    不过写的时候没想那么多。就直接贪了。

    【代码】

    #include<bits/stdc++.h>
    #define ll long long
    #define rei(x) scanf("%d",&x)
    #define rel(x) scanf("%I64d",&x)
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    using namespace std;
    
    int n,m;
    
    int main(){
        #ifdef LOCAL_DEFINE
            freopen("D:\rush.txt","r",stdin);
        #endif
        int T;
        rei(T);
        while (T--){
            rei(n);rei(m);
            int cnt = 0;
            if (m&1){
                cnt += n/2;
                if(n&1) cnt++;
                m--;
            }
            cnt += n*(m/2);
            printf("%d
    ",cnt);
        }
        return 0;
    }
    
  • 相关阅读:
    二阶段任务分配
    二阶段12.2
    针对提出的意见的改进
    一阶段spring(小呆呆)团队评分
    搜狗输入法使用感受
    省呱呱典型用户和用户场景
    省呱呱意见评论
    11/21
    11/20小组计划
    11/19小组计划
  • 原文地址:https://www.cnblogs.com/AWCXV/p/12970185.html
Copyright © 2020-2023  润新知