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; }