详细的证明:点击打开链接
我的想法:
要想保证题目所说 构造最小行的和,只能是这种情况
..... 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; }
HDU 4572 Bottles Arrangement,布布扣,bubuko.com
原文:http://blog.csdn.net/imutzcy/article/details/25705403