zoukankan      html  css  js  c++  java
  • 【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;
    }
    
  • 相关阅读:
    HDU-5384
    UVALive 5099
    ZOJ-2753
    HUD-5379
    HDU-5360
    HDU-5351
    HDU-5335
    HDU-5317
    HDU-2487
    常用十六进制颜色对照表代码查询
  • 原文地址:https://www.cnblogs.com/AWCXV/p/8052788.html
Copyright © 2011-2022 走看看