码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-12-17 19:26:52      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:pos   for   ber   ref   number   +=   cpp   include   def   

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


在这里输入题意

【题解】

  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

标签:pos   for   ber   ref   number   +=   cpp   include   def   

原文地址:http://www.cnblogs.com/AWCXV/p/8052788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!