您的位置:首页 > 其它

【习题 8-10 UVA - 1614】Hell on the Markets

2018-01-10 15:57 197 查看

【链接】 我是链接,点我呀:)
【题意】


在这里输入题意

【题解】


证明:前i个数一定能凑够1..sum[i]中的所有数字
i=1时显然成立。
现在假设i>=2时结论成立
即前i个数字能凑出1..sum[i]
令k=i+1;
现在证明前i+1个数字能凑出1..sum[i+1]
即用前i个数字和数字a[i+1]凑出1..sum[i+1]
现在我们把i+1个数字全都用上。
得到sum[i+1]
现在我们要再得到sum[i]+1,sum[i]+2..sum[i+1]-1
那么我们只要用sum[i+1]减去p就好
设delta = sum[i+1]-sum[i]
则p∈[1..delta-1]
而显然p是小于等于i的;(因为sum[i+1]-sum[i]-1<=i)
而sum[i]>=i
则说明前i个数字一定能凑够所有的p即凑够1..delta-1
那么我们把凑出来的数字从这i+1个数字里面删掉
剩下的就是所需求的新凑出来的数字了
sum[i]+1,sum[i]+2..sum[i+1]-1这些数字都能用前i+1个数字凑出来。
则前i+1个数字能够凑够1..sum[i]中的所有数字。

知道这个结论之后。从后往前贪心凑就可以了。
(sum
为奇数显然无解
(选择sum
/2为负数就好

【代码】

在这里输入代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: