• 【习题 8-10 UVA


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

    在这里输入题意

    【题解】

    证明:前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[n]为奇数显然无解
    (选择sum[n]/2为负数就好

    【代码】

    在这里输入代码
    
  • 相关阅读:
    glib文档
    2020第42周面向失败设计
    2020第41周中年危机焦虑
    2020第40周选合适的工具
    2020第39周微行动思维
    2020第38周
    2020第37周
    2020第36周
    2020第35周不要让孩子输在起跑线
    2020第34周滥竽充数
  • 原文地址:https://www.cnblogs.com/AWCXV/p/8259095.html
Copyright © 2020-2023  润新知