具体的证明:点击打开链接

我的想法:

要想保证题目所说 构造最小行的和,仅仅能是这样的情况

.....      m-3  m-2  m-1  m    |   m  m-1  m-2  m-3    . .... 

所以Ans 也就是取前N项就可。

又由于 It is guaranteed that N is always odd。  显然构造没问题。


#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
	int n,m;
	while(~scanf("%d%d",&m,&n))
	{
		int sum=0,k=0;
		for(int i=1;i<=n;i++)
		{
			if(i%2==0)
			{
				sum+=(m-k);
				k++;
			}
			else sum+=(m-k);
		}
		printf("%d\n",sum);
	}
	return 0;
}