首页 > 其他分享 >简单分解-最优分解贪心问题

简单分解-最优分解贪心问题

时间:2022-10-28 10:38:18浏览次数:68  
标签:分解成 arr int 最大值 分解 最优 贪心


简单分解-最优分解贪心问题

题目描述

现有一个数 ,需要把n分解成一个或多个两两互不相同的正整数(例如:可以分解成,也可以分解成,但不能分解成。当然也可以不分解,这样能分解的结果中累乘的最大值是),并累乘,累乘结果最大值可能是多少。

输入描述:

多组输入,每组一个正整数

输出描述:

输出一个整数,表示分解后累乘的最大值,结果对取模。

问题分析

首先,此类问题均属于最有分解问题。

我们首先关注整数的一个性质:若 (常数),则越小, 越大

证明:,则有

,显然越小,越大。

由于,那么我们需要对进行分类讨论:

  1. 时,的分解乘积小于,为获得极大的累乘结果,我们只能选择不分解
  2. 时,,因此至少从开始分解,可以保证乘积
  3. 如果最后剩下的数字小于前一个,就要平均分配给前面的数字,且要从后往前分,反之可能会产生重复数字

分成从 开始的连续自然数的和。如果最后剩下一个数,将此数在后项优先的方式下均匀地分给前面各项。该贪心策略首先保证了正整数所分解出的因子之差的绝对值最小,即 最小;同时又可以将其分解成尽可能多的因子,且因子的值较大,确保最终所分解的自然数的乘积可以取得最大值 。

#include <bits/stdc++.h>
using namespace std;

#define Max 100005
int main(){
int n; cin >> n;
if (n < 4) return cout << n << endl, 0;
int arr[Max] = {};
int m = n, c = 2;
int i;
for (i = 0; c <= m; i++){
arr[i] = c;
m -= c;
c++;
}
int cou = i; //一共有几个数
//如果优剩余的数 就从后往前平均分配到前的数字上
while(m) arr[--i]++, m--;
int mul = 1;
for (int i = 0; i < cou; i++) mul *= arr[i];
cout << mul << endl;
}


标签:分解成,arr,int,最大值,分解,最优,贪心
From: https://blog.51cto.com/u_12372287/5803541

相关文章

  • 【PNR#2 Div1 D】找零(DP)(贪心)
    找零题目链接:PNR#2Div1D题目大意有500,100,50,10,5,1这些面额的纸币,你有X块钱,使用最少的纸币数表示的。然后有一些物品,每种只有一个,有费用。每次你可以选择一些......
  • 完全背包问题 —— 贪心优化 DP 范围
    题意:现在有\(2n+1\)个物品(\(n\le300\)),体积分别为\(-n,-n+1,\dots,-1,0,1,\dots,n\),第\(i\)个物品有\(a_i\)个,求选出恰好\(S\)的总体积最多能选几个物品。第一......
  • 力扣(leetcode) 104.二叉树的最大深度 (详细步骤分解递归)
    题目在这:​​https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/​​思路分析:找二叉树的最大深度,用递归比较好理解也比较好想。遍历左子树,遍历右子树。回退......
  • *PAT_甲级_1033 To Fill or Not to Fill (25分) (C++)【贪心算法】
    目录​​1,题目描述​​​​题目大意​​​​输入​​​​输出​​​​说明​​​​2,思路​​​​数据结构​​​​算法​​​​3,代码​​1,题目描述SampleInput1:5013001......
  • PHP – 在数组中分解值,输出到制表符分隔文件
    我在名为test_tab.txt的文件中有以下内容(制表符分隔):header1header2header3field1field1afield1b;field1cfield2field2afield2bfield3field3a......
  • 2 道用到同个贪心 trick 的题目
    你别急,我可能不会。https://www.luogu.com.cn/problem/P4437https://www.luogu.com.cn/problem/UVA1205......
  • DFS(贪心问题)--解决最少数量装箱问题
    题目描述有重量分别为3,5,7公斤的三种货物,和一个载重量为X公斤的箱子(不考虑体积等其它因素,只计算重量)需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少(三种货物数量无......
  • 贪心找零钱
    题目描述楚乔、宇文玥和燕洵在日本旅行,经过了几天的游玩之后,钱包里出现了大量硬币,楚乔决定用钱包里的硬币为宇文玥和燕洵在自动贩卖机买水。楚乔的钱包里有1元、5元、10元、......
  • 贪心--(货币找零)
    题目描述楚乔、宇文玥和燕洵在日本旅行,经过了几天的游玩之后,钱包里出现了大量硬币,楚乔决定用钱包里的硬币为宇文玥和燕洵在自动贩卖机买水。楚乔的钱包里有1元、5元、10元、......
  • 贪心
    Saruman'sArmyTimeLimit: 1000MS MemoryLimit: 65536KTotalSubmissions: 19615 Accepted: 9580DescriptionSarumantheWhitemustleadhisarmyalongastraig......