POJ 1032--Parliament
来源:互联网 发布:2017mac和iphone铃声 编辑:程序博客网 时间:2024/05/16 12:51
题意
题目的意思是,有一个会议总共会有N个代表参加,这些代表将会被分成n个小组。每天的会议需要每个小组选派1人参加,并且参加会议人员的组合每天都不一样。求要使得这个会议尽可能开得久一点,那么这N个代表应该怎么分组。
分析
假定最后的分组是N = A1 + A2 + .. + An,那么会议的最长时间就变为T = A1 * A2 * … * An。所以这题的意思就是,和为定值的情况下,如何使若干个数的积最大。
由于
1 * A2 * A3 * …* An < (A2+1) * A3 * … An。
很明显的是不能有一个人的小组。
另外
a+b+c=s, 在a,b,c > 1的时候,a * b * c >= a * (b + c),
因此为了积最大,需要所分的组尽可能的多。
我们假定人数最少的一个组A1人数为2,而且之后的每个组均比前面一个组多一个人,那么n个组的情况是Tn = A1 * (A1 + 1) * (A1 + 2) * … * (A1 + n - 1) ,此时可能还剩下m(0 < m < A1 + n)个人。
所以需要将这些人分配给A1到An,而此时显然只能在往后面m个组每个组添加1个人。
代码如下:
Memory: 244K Time: 0MS Length: 15LINES
#include<iostream>using namespace std;inline int fun(int x) { return x * (x + 1) / 2 - 1; }int main(){ int N = 0; cin >> N; int mul = 0; int i = 2; for (; N - fun(i) > i; ++i); int remain = N - fun(i); for (int k = 2; k < i + 1; ++k) cout << (k > i - remain ? ((k == remain && k == i) ? k + 2 : k + 1) : k) << " "; return 0;}
阅读全文
0 0
- Parliament--POJ--1032
- POJ 1032 Parliament
- poj 1032 Parliament
- POJ 1032 Parliament (水题)
- POJ 1032 Parliament
- POJ 1032 Parliament 笔记
- POJ 1032 Parliament
- POJ 1032 Parliament
- POJ 1032--Parliament
- poj 1032 Parliament 整数拆分
- POJ 1032 Parliament
- ♥POJ 1032-Parliament【数学】
- poj 1032 Parliament 编程的小技巧
- POJ 1032 / Northeastern Europe 1998 Parliament (贪心)
- POJ 1032 Parliament 简单数论整数拆分
- poj 1032 Parliament (整数拆分)
- 1032 Parliament
- 1032 Parliament
- 03.24 正则表达式
- spring实用注解(一)--基本注解
- Python 类型强制转换
- 阿牛的EOF牛肉串
- spring cloud官方文档提到的微服务开发的12项要素。
- POJ 1032--Parliament
- #ARM开发# 点亮LED和操作蜂鸣器
- iptables的用法
- oracle listagg和wm_concat函数
- 【Dockerfile】使用Dockerfile创建带nginx服务的Centos Docker镜像
- 细说反射,Java 和 Android 开发者必须跨越的坎
- 定制clojure的REPL
- 一些个人见解
- SunlightDB区块链共识机制与SunlightCoin预告