题目大意:
n(1<=n<=50)个美女,魅力值各不相同。
有k(k<=n*(n+1)/2)天的选美比赛,每天派去比赛的美女们的魅力值之和都不同。
求这k天要如何安排。
题目思路:
重点在于,魅力值各不相同和k<=n*(n+1)/2,为毛k会有一个这种条件呢?
先看魅力值各不相同,所以如果假设把美女的魅力值按降序排序。
那么当派i人时,按以上派法:
a[1],a[2],...,a[i-1],a[i]
a[1],a[2],...,a[i-1],a[i+1]
a[1],a[2],...,a[i-1],a[i+2]
...
a[1],a[2],...,a[i-1],a[n]
因为各不相同,所以这些魅力值和,肯定不等。
再假设当派i+1人时,派法如下:
a[1],a[2],...,a[i],a[i+1]
a[1],a[2],...,a[i],a[i+2]
a[1],a[2],...,a[i],a[i+3]
...
a[1],a[2],...,a[i],a[n] www.2cto.com
和派i人类似,而且因为各不相同,所以这些魅力值和肯定和派i人的不等。
从这边也发现了,i人的派法有n-i+1种,i+1人的派法有n-(i+1)+1种。
所以全部的派法种数sum(1~n)=n*(n+1)/2,刚好是k的最大上限,所以这种派法就可以满足题目要求。
代码:
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include