HDU-4572 Bottles Arrangement 大猜想

题意:给定一个两个数M,N,表示有N个1,N个2,一直到N个M,现在要求将这些数排列成一个M*N的矩阵,使得任意一行的两个相邻值差值不大于1,每一列没有两个相同的数。

解法:直接输出M,M,M-1,M-1...这样的一个序列之和即可。

代码如下:

#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;

int M, N;

int main() {
    while (scanf("%d %d", &M, &N) != EOF) {
        int ret = 0;
        for (int i = 2; i < N; i += 2) {
            ret += M * 2;
            --M;
        }
        printf("%d\n", ret + M);
    }
    return 0;
}

 

posted @ 2013-06-08 13:42  沐阳  阅读(388)  评论(0编辑  收藏  举报