UPC-最优分解问题(贪心)

简介: UPC-最优分解问题(贪心)

最优分解问题

时间限制: 1 Sec 内存限制: 128 MB

[提交] [状态]

题目描述

设n是一个正整数。现在要求将n分解为若干个互不相同的自然数的和,且使这些自然数的乘积最大。

输入

第1行是正整数n。(n不超过50)

输出

计算出的最大乘积。

样例输入 Copy

10

样例输出 Copy

30


具体证明:传送门


贪心的思想,和一定时,如果两个数差值越小,乘积就越大(好像是个数学公式?)

所以从2开始枚举,累加和为sum,直到sum+i>n时停止

可能会有剩下的值,从后向前依次将该数加1即可。

重点是特判

当n=1时,可以拆成1和0,答案为0。

当n=2时,只能拆成2和0,答案为0。

因为要求拆出来的正整数不相同,所以1和1不可行

当n=3时,可以拆成1和2,答案为2。

当n>=4时,开始枚举即可。


坑点就是n=2。。

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main(){
    int n;cin>>n;
    if(n<=4){
        if(n==2) cout<<0<<endl;
        else
        cout<<max(n-1,0)<<endl;
        return 0;
    }
    vector<int>v;
    int sum=0;
    for(int i=2;i<=n;i++){
        if(sum+i<=n) v.push_back(i),sum+=i;
        else break;
    }
    int tmp=n-sum;
    ll res=1;
   /// cout<<tmp<<endl;
   /// cout<<v.size()<<endl;
    for(int i=v.size()-1;i>=0;i--){
        if(tmp>0) v[i]++,tmp--;
        else break;
    }
    int ans=0;
    for(auto tt:v){
        ///cout<<tt<<" ";
        res*=tt;
        ans+=tt;
    }
    cout<<res<<endl;
   /// cout<<ans<<endl;
    return 0;
}

补来自学长的证明:

a+b=c

b=c-a

ab=(c-a)a=ac-aa

对称轴 a=c/2

根据一元二次方程a取 对称轴左右时最大

从而将问题从两个数转换到三个数

至多个数

目录
相关文章
|
5月前
【代数学作业5】理想的分解:高斯整数环中理想的结构,并根据其范数和素数的性质进行分解
【代数学作业5】理想的分解:高斯整数环中理想的结构,并根据其范数和素数的性质进行分解
74 0
|
5月前
|
存储 算法 Java
【算法设计与分析】— —实现最优载的贪心算法
【算法设计与分析】— —实现最优载的贪心算法
|
10月前
|
算法
最优闭回路问题
最优闭回路问题
|
算法
秒懂算法 | 递推方程求解方法
时间复杂度和空间复杂度表示为递推方程的两种求解方法。
301 1
秒懂算法 | 递推方程求解方法
|
机器学习/深度学习 算法
《最优化方法》——无约束具体算法以及KK
《最优化方法》——无约束具体算法以及KK
329 0
《最优化方法》——无约束具体算法以及KK
|
存储 算法
【贪心法】最优分解问题
【贪心法】最优分解问题
377 0
【贪心法】最优分解问题
运用Doolitle分解法解线性方程组
运用Doolitle分解法解线性方程组
96 0
排列组合相关公式讲解(Anm,Cnm等)
排列组合相关公式讲解(Anm,Cnm等)
2780 0
排列组合相关公式讲解(Anm,Cnm等)
|
机器学习/深度学习
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
231 0
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
|
机器学习/深度学习 Windows
【组合数学】递推方程 ( 常系数线性齐次递推方程 | 常系数、线性、齐次 概念说明 | 常系数线性齐次递推方程公式解法 | 特征根 | 通解 | 特解 )
【组合数学】递推方程 ( 常系数线性齐次递推方程 | 常系数、线性、齐次 概念说明 | 常系数线性齐次递推方程公式解法 | 特征根 | 通解 | 特解 )
397 0