1032 Parliament

Posted sweet-ginger-candy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1032 Parliament相关的知识,希望对你有一定的参考价值。

描述
愚人土地议会的新集会由N名代表组成。 根据现行规定,代表们应分为不同规模的不相交群体,每天每个小组必须派一名代表参加和解委员会。 和解委员会的组成应该每天都不同。 议会只有在完成这项工作的情况下才能运作。
您将编写一个程序,确定每个组应包含多少代表,以便议会尽可能长时间地工作。
输入
输入文件包含单个整数N(5 <= N <= 1000)。
输出
将输出文件写入允许议会在最长可能时间内工作的组的大小。 这些尺寸应按升序打印在一行上,并应以空格分隔。
样例输入
7
样例输出
3 4

//////////////////////////////////////////////////////////////////////////
//        POJ1032 Parliament
//        Memory: 280K        Time: 0MS
//        Language: C++        Result: Accepted
//////////////////////////////////////////////////////////////////////////

#include <iostream>

using namespace std;

int main() {
    int N;
    cin >> N;
    int cnt;
    int sum = 0;
    for (cnt = 0; sum + 2 + cnt<= N; ++cnt) {
        sum += (2 + cnt);
    }
    int left = N - sum;
    int p = 1 + cnt;
    while (left > 0) {
        --p;
        --left;
    }
    if (p == 0) {
        for (int i =3; i < 2 + cnt; ++i) {
            cout << i << " ";
        }
        cout << 3 + cnt << endl;
    } else if (p == 1) {
        for (int i =3; i < 2 + cnt; ++i) {
            cout << i << " ";
        }
        cout << 2 + cnt << endl;
    } else if (p == cnt + 1) {
        for (int i =2; i < 1 + cnt; ++i) {
            cout << i << " ";
        }
        cout << 1 + cnt << endl;
    } else {
        for (int i =2; i <= p; ++i) {
            cout << i << " ";
        }
        for (int i = p + 2; i < cnt + 2; ++i) {
            cout << i << " ";
        }
        cout << 2 + cnt << endl;
    }
    system("pause");
    return 0;
}

来源:https://www.cnblogs.com/dengeven/p/3229143.html

以上是关于1032 Parliament的主要内容,如果未能解决你的问题,请参考以下文章

译《The Part-Time Parliament》——终于读懂了Paxos协议!

尝试写入只读数据库(代码 1032)

ZZNUOJ_C语言1032:员工薪水(完整代码)

浙大pat甲级题目---1032. Sharing (25)

[贪心]TYVJ1032 零用钱

HDU 1032 [The 3n + 1 problem] 暴力模拟