zoukankan      html  css  js  c++  java
  • Codeforces Round #251 (Div. 2) C. Devu and Partitioning of the Array

    注意p的边界情况,p为0,或者 p为k

    奇数+偶数 = 奇数

    奇数+奇数 = 偶数

    #include <iostream>
    #include <vector>
    #include <set>
    #include <algorithm>
    #include <cmath>
    
    using namespace std;
    
    int main(){
        int n,k,p;
        long a;
        cin >> n >> k >> p;
        vector<long> even, odd;
        vector<set<long> > parts(k);
        for(int i = 0 ; i < n ; ++ i){
            cin >> a;
            a%2 ? odd.push_back(a): even.push_back(a);
        }
        int even_cnt = p, odd_cnt = k - p;
        if(odd.size() < odd_cnt  || (odd.size() -odd_cnt)%2 ) cout<<"NO"<<endl;
        else{
            for(int i = p; i < k ; ++ i)  parts[i].insert(odd[i-p]);
            if(even.size()+(odd.size()-odd_cnt)/2 < p) cout<<"NO"<<endl;
            else{
                if(even.size() >= p){
                    for(int i = 0 ; i < p; ++ i) parts[i].insert(even[i]);
                    for(int i = p; i < even.size(); ++ i) parts[p-1 >= 0 ? p-1 : p].insert(even[i]);
                    for(int i = k-p; i < odd.size() ; ++ i ) parts[p-1 >= 0 ? p-1 : p].insert(odd[i]);
    
                }else{
                    for(int i = 0 ; i < even.size(); ++ i) parts[i].insert(even[i]);
                    int j = k-p;
                    for(int i = even.size(); i < p-1; ++ i) parts[i].insert(odd[j++]),parts[i].insert(odd[j++]);
                    while( j < odd.size()) parts[p-1 >= 0 ? p-1 : p].insert(odd[j++]);
                }
                cout<<"YES"<<endl;
                for(int i = 0 ; i < k; ++ i){
                    set<long> tmp = parts[i];
                    cout<<tmp.size();
                    for(set<long>::iterator iter = tmp.begin(); iter!=tmp.end(); ++ iter) cout<<" "<<*iter;
                    cout<<endl;
                }
            }
        }
    }
  • 相关阅读:
    自定义可下拉刷新列表
    在listview里面的checkbox被选中或取消
    [转]Android中音乐文件的信息详解【安卓源码解析二】
    service 和broadcastreceiver的简略小结
    闹铃
    hdu 2112赤裸裸的最短路
    hdu 2177错题,很水的测试数据
    hdu 2184模拟
    hdu1150最小点集覆盖
    hdu 3746KMP的应用
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3777107.html
Copyright © 2011-2022 走看看