POJ 1032 / Northeastern Europe 1998 Parliament (贪心)

Northeastern Europe Regional (NEERC) 1998 测试数据 Northeastern Europe Regional 1998 测试数据 立即下载

http://poj.org/problem?id=1032


题意:把N个人分成若干组且每组人数不同,每天每组派一个人出来开会,并且每天开会的这群人不与前面的日子的开会人群不完全相同。

也就是说,求N1+N2+...+Nn=N,使N1,N2,...,Nn都不相等且他们的乘积最大。


思路:分的组越多乘积越大(在题意下ab>a+b)


则有分法:设有一连续递增序列为2,3,...,i,和sum<=n,则: 
1.若剩余值(n-sum)等于i,则最后输出序列为:3,4,...,i,i+2,即将原最大序列每项加1,再将最后剩余的一个1加到最后一项上。 
2.若剩余值(n-sum)小于i,则从序列的最大项i开始,从大到小依次将每项加1,直到剩余值用完。 


分法合理性的证明:

首先说说连续,可以看到最后结果a[i]-a[i-1]<=2,也就是相邻两个数不能相差2以上,因为如果a[i]-a[i-1]=3,那么显然a[i-1]+1,a[i]-1也是满足要求的,且它们之间的乘积大于原来的,因此当相邻两个数相差>2时,总可以找到它们之间的两个数使得结果是更优的。

再来说说该序列必须以2或3开始,若序列第一项为5,则5=2+3,而2*3>5使得结果更优,对于大于5的第一项有类似结果。
再考虑4为第一项,根据前面的第一条,那么第二项只能为5或6.对于4,5可以分解为2,3,4使得结果更优。而对于4,6可以分解为2,3,5使得结果更优。因此可以看到该序列不可能是以大于3为开始的。


完整代码:

/*0ms,356KB*/

#include<cstdio>

int main()
{
	int n;
	scanf("%d", &n);
	int i = 2, sum = 0;
	while (sum + i <= n)
	{
		sum += i;
		++i;
	}
	int diff = n - sum, j;
	if (diff == i - 1)
	{
		for (j = 3; j < i; ++j)
			printf("%d ", j);
		printf("%d", j + 1);
	}
	else
	{
		for (j = 2; j < i - diff; ++j)
			printf("%d ", j);
		for (; j < i; ++j)
			printf("%d ", j + 1);//最后多一个空格不要紧
	}
	putchar(10);
	return 0;
}

工程师必看:如何用MINITAB快速计算传感器寿命(附详细步骤) 本文为工程师提供了使用MINITAB软件快速计算传感器寿命的详细实战指南。文章重点阐述了如何通过数据预处理、回归分析拟合阿伦尼斯模型,并最终预测平均寿命与置信区间,帮助工程师高效处理加速寿命试验数据,提升可靠性分析工作的准确性与效率。 阅读详情

相关推荐

嵌入式开发新思路:用QP框架5步搞定状态机设计(附STM32移植指南)

本文介绍了在嵌入式开发中使用QP框架进行状态机设计的新思路。通过对比传统RTOS与事件驱动模型的差异,详细解析了QP框架的核心组件与优势,并提供了基于STM32的5步实战指南,包括环境搭建、状态机实现与性能优化技巧,帮助开发者从顺序阻塞思维转向高效的事件驱动架构。

milk5的博客 900

POJ_1032(贪心问题,正整数拆分)

POJ_1032,贪心问题,把正整数n表示成若干个不同的正整数的和,求积的最大值,参考博客 #include <iostream> using namespace std; int main(){ int n,group; cin>>n; int nums[500]; //共有group+1组(编号0~group-1),初始时第0组人数为2,之后每组依次多一人 f...

宫·商的博客 367

5分钟搞定Google Custom Search API申请:从注册到获取CX Key全流程

本文详细介绍了如何快速申请和配置Google Custom Search API,从Google Cloud项目创建、启用计费、获取API Key,到在Programmable Search Engine控制台创建自定义搜索引擎并获取关键的CX Key,提供了全流程实战指南。文章还包含安全配置建议、API调用测试方法及前端与后端的集成代码示例,帮助开发者高效实现网站或应用的智能搜索功能。

weixin_29227585的博客 1668

POJ1032-数学规律

给出一个n,把n拆分成多个不同的数,要求他们的乘积最大,升序输出这样的序列 /* 一个数分成两部分,要使得乘积最大必然是两部分越接近越好 例如9分成4+5,这必然是分成两份的所有方法中最大的; 然后我们 对于 5,我们发现 5分成2+3, 会 有 2*3>5,所以5还可以分, 也就是对于x分成两份,x=y+z,其中如果y或z可以再分成两份,那么就一直分下去 因为每次分,都会使得乘积变大,直到x=

缺氧 549

Cadence Virtuoso ADE L保姆级教程:从DC到Noise,一次搞定6种仿真设置

本文提供Cadence Virtuoso ADE L的全面仿真教程,涵盖DC工作点分析、瞬态响应、AC特性、零极点分布和噪声性能等6种仿真设置。通过详细的步骤和实用技巧,帮助工程师高效完成从基础配置到高级后处理的完整工作流,显著提升IC设计效率。

weixin_26841743的博客 601

Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的理论简述和python仿真实现(附源码)

经典论文Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的学习与编程仿真,提供源码

m0_59701926的博客 1238

[原创]北大ACM POJ 1032题解

[原创]北大ACM POJ 1032题解这道题找到规律了就很好写。题意就是求N1+N2+...+Nn=N. 使N1 ,N2...Nn都不相等且他们的乘积最大做法就是先求出以2为起始的最大连续自然数序列之和sum,使得sum的值不超过输入数n。 然后分情况讨论: 设此最大序列为2,3,...,i,则: 1.若剩余值(n-sum)等于i,则最后输出序列为:3,4,...,i,i+2,即将原最大序列每项...

weixin_30879833的博客 182

python模拟银行交易流水

模拟自动生成银行交易流水,其中包括:入账账号、出账账号、交易金额、交易余额、交易时间、出入表示关键字段

qq_31823889的博客 2910

poj1032 数论

题意:议会由N个代表组成。代表被分到不同的组中,任意两个组的人数不能相等,任意一个代表只能在一个组中。每天每个组只能派一名代表去开会,每天参加会议的代表不能重复,只有这样议会才能正常工作。求如何分组使得议会正常工作的时间最长。 算法:数论。 假设 N = A1+A2+...+An,那么议会正常工作的时间为A1*A2*...*An,所求即为 A1*A2*...*An的最大值。 对任意一

aidway的专栏 1499

手把手教你做基于stm32的红外、语音、按键智能灯光控制(上)

这次项目使用的板子是stm32f103c8t6最小系统板,这个板子在tb上都能够买到,随便一个最小系统板都可以,== 注意在买最小系统板的时候需要买一个stlink下载器来下载程序。显示模块是使用的0.96英寸的OLED屏幕,注意是使用的IIC通信协议的OLED屏幕,不是使用SPI总线协议的。这次写的代码还顺便集成了检测温湿度的功能,所以要使用DHT11温湿度传感器,来采集温度。本文所设计的基于单片机的灯光控制系统主要由模式选择功能、手动模式和自动模式组成。LED灯自然就是要控制的部件了。

nbbskk的博客 6557

小论文/大论文必备| YOLO26热力图可视化,支持8种常用热力图方法:GradCAM,GradCAMPlusPlus,XGradCAM,EigenCAM,HiResCAM等,助力小论文和大论文加分

本文介绍了如何为YOLO26模型添加热力图可视化功能,包括完整代码和使用教程。热力图能增强模型的可解释性,适用于论文中的实验对比和结果展示。文章提供了详细的代码实现,包含图像处理、热力图生成和结果可视化等功能,并指导用户如何创建Python文件、粘贴代码以及调整参数生成最佳热力图。通过设置不同层号,用户可以灵活控制热力图效果,最终结果将保存在指定文件夹中。

Ai缝合怪、助力小伙伴高效发论文 493

POJ 1032 最大乘积

【问题描述】   一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,…。  现在你的任务是将指定的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。 【输入格式】   只一个正整数n。【输出格式】   是最大的乘积。【输入样例】 10【输出样例】 30 【数据范围】 3 ≤ n ≤ 10000【来源】

细雨欣然 1074

71、CAN总线双绞线绞距与抗共模干扰的定量关系

摘要:本文探讨了CAN总线双绞线绞距与抗共模干扰的定量关系。通过理论推导得出共模电压与绞距平方成正比,绞距越小抑制效果越好。工程实践表明,工业现场推荐绞距不超过30mm,高频干扰场景需优先优化绞距。实测数据验证了绞距均匀性的重要性,建议控制在15-25mm范围,安装时保持绞合结构完整。案例显示,将绞距从50mm改为15mm后,共模干扰从12V降至1.8V,有效解决了CAN通信问题。绞距选择需兼顾理论计算与现场实测,同时注意与屏蔽层的协同设计。

2401_88858637的博客 186

【简单题】POJ1032解题报告

Terryan的专栏 333

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ - 1032: Parliament

题目链接:点击打开链接题目大意:设 n 是一个正整数。现在要求将 n 分解为若干个自然数之和(要求这些自然数互不相同),使得自然数的成绩最大。输出这个最大的乘积。解题思路:点击打开链接AC 代码#include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #include&lt;iostream&gt; #incl...

647

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

POJ 1032 Parliament 笔记

N个人分为不同规模的小组开会。每个小组每天派一人,开会时参加的人不能和以前某次会重复,使能开最多的会。求怎么分组。

woniupengpeng的专栏 414

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

poj 1032

题意: ( 输入一个数N,将N分为若干个不同的数的和(N=n1+n2+n3+...),要求找出能使 n1*n2*n3*...最大的n1,n2,n3...,并且输出 n1,n2,n3...) 条件:已知N, n1+n2+n3+...=N 且 所选的n1,n2,n3...,能使n1*n2*n3*...最大 求:n1,n2,n3... 分析: 注意 我们拆分为保证拆分数相乘最大 拆分数...

weixin_34234721的博客 235

ACM Parliament

ParliamentTime Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description New convocation of The Fool Land's Parliament consists of N delegates. A...

SYITwin的博客 269

poj 1032 Parliament

Parliament Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16784   Accepted: 7082 Description New convocation of The Fool Land's Parliament consists of N del

尘飞——Data Scientist 1083

又是整数划分(poj1032)

问题:给你一个数n把它分为若干个数(不同) 使得他们的乘积最大 分析 :  把一个数n可以分为a,b两个大于一的数,他们的乘积一定会大于这个数n  so 拆开数的原则就是把他们分的尽可能小的数 那么最好是x个2 因为不同所以最好两两相差不超过2 于是乎 可以使得 n = 2+3+...+t e.g 6=2 * 3 *1 用1不能改变它的乘积值 所以把剩下的加到最前头(保证不同)6 = 2

一只叫做Unix的猫 1135

POJ 1032 Parliament (水题)

把一个数分成n个数之和,只要保证每个数都不小于2,那么他们的乘积一定大于等于这个数。 所以从2开始一个数一个数的减,到不能减时,假设剩下k,为了不出现相同的数,要把之前的答案从大到小k个数都加1。 代码: // // main.cpp // 1032 Parliament // // Created by Baoli1100 on 15/4/2. // Copyright (

Baoli1008的专栏 783

POJ 1033 / Northeastern Europe 1998 Defragment (模拟&队列)

Defragment http://poj.org/problem?id=1033 Time Limit: 2000MS Memory Limit: 10000K Case Time Limit: 1000MS Special Judge Description You are taking part in the development

AC,∑ndless 1420

【POJ1032】把一个数分解为不重复的数的和使其乘积最大

题意求N1+N2+…+Nn=N. 使N1 ,N2…Nn都不相等且他们的乘积最大? 做法就是求出以2起始的最大连续自然数序列之和sum,使得sum的值不超过输入数n, 然后分情况讨论: 设此最大序列为2、3、……、w,则: 1。若剩余值(n-sum)等于w,则最后输出序列为:3、4、……、w、w+2,即将原最大序列每项加1,再将最后剩余的一个1加到最后一项上。(这一项结果很显然) 2。若剩余值(n

阳光心态,健康人生的博客 2191

UVa 11264 Coin Collector (选硬币&贪心好题)

思路: 1. 你肯定注意到了,面值最大的硬币c[n-1]必须要选。(反证:如果花了sum元却没有选中它,可知sum<c[n-1],于是用m+c[n-1]元去兑换可以得到一个更优解。) 2. 贪心的关键:假设S(i)是c[1]…c[i] 中那些被选中的货币的面值的和。那么一定有 S(i) < c[i+1]。 3. 所以可以构造一个这样的序列出来。按照2中所说,如果有 S(i-1) < c[i]且S(i) =S(i-1)+c[i]<c[i+1],那么c[i]将被选中。 完整代码:

AC,∑ndless 4699
上一篇: SWERC 2011 / HDU 4196 Remoteland (数论&想法题)
下一篇: NOI 国家集训队论文集
synapse7
博客等级 码龄14年 432粉丝 701原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值