Codeforces Round #452 (Div. 2) C Dividing the numbers

Posted Visitor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #452 (Div. 2) C Dividing the numbers相关的知识,希望对你有一定的参考价值。

【链接】 我是链接,点我呀:)
【题意】


在这里输入题意

【题解】

  1. n为偶数。
    l = 1, r = n
    (l,r)放在一组
    l++,r--
    新的l,r放在另外一组
    直到l+1==r
    这个时候,判断两组的和,如果一样的话,分散在两组
    差为1否则差为0
  2. n为奇数
    l = 2,r = n
    (l,r)放在一组
    l++,r--
    新的l,r放在另外一组
    直到l+1==r
    这个时候,判断两组的和,如果一样的话,分散在两组
    差为0(把1放在那个较少的组)
    否则,差为1
    1随意放在哪一组都可以

【代码】

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

int n;
int now = 0;
vector<ll> v[2];
ll sum[2];

int main(){
    #ifdef LOCAL_DEFINE
        freopen("rush_in.txt", "r", stdin);
    #endif
    ios::sync_with_stdio(0),cin.tie(0);
    cin >> n;
    if (n%2==0){
        int l = 1,r = n;
        while (l+1<r){
            v[now].push_back(l);
            v[now].push_back(r);
            sum[now]+=(l+r);
            now = now^1;
            l++,r--;
        }
        ll differ = 0;
        if (sum[0]!=sum[1]){
            v[now].push_back(l);
            v[now].push_back(r);
            differ = 0;
        }else{
            differ = 1;
            v[0].push_back(l);
            v[1].push_back(r);
        }
        cout << differ<<endl;
        cout << (int) v[0].size();
        for (int i = 0;i < (int) v[0].size();i++) cout <<' '<< v[0][i];
    }else{
        int l = 2,r = n;
        while (l+1<r){
            v[now].push_back(l);
            v[now].push_back(r);
            sum[now]+=(l+r);
            now = now^1;
            l++,r--;
        }
        ll differ = 0;
        if (sum[0]!=sum[1]){
            v[now].push_back(l);
            v[now].push_back(r);
            differ = 1;
        }else{
            differ = 0;
            v[0].push_back(l);
            v[0].push_back(1);
            v[1].push_back(r);
        }
        cout << differ<<endl;
        cout << (int) v[0].size();
        for (int i = 0;i < (int) v[0].size();i++) cout <<' '<< v[0][i];
    }
    return 0;
}

以上是关于Codeforces Round #452 (Div. 2) C Dividing the numbers的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #452 (Div. 2) D

Codeforces Round #452 (Div. 2)

Codeforces Round #452 (Div. 2) BMonths and Years

Codeforces Round #452 (Div. 2) A Splitting in Teams

Codeforces Round #452 (Div. 2) DShovel Sale

Codeforces Round #452 (Div. 2) C Dividing the numbers