zoukankan      html  css  js  c++  java
  • codeforces1196B Odd Sum Segments 思维

    网址:http://codeforces.com/contest/1196/problem/B

    题意:

    把$n$个数分成连续的且两两不相交的$k$段,要求每段的和都是奇数,若可以输出分法,不行输出$NO$。

    题解:

    贪心的取区间,偶数$+$偶数$=$偶数,偶数$+$奇数$=$奇数,奇数$+$奇数$=$偶数。所以(奇数个数$-k$)如果是奇数或者是负数,一定不行。否则输出$k-1$个数表示前$k-1$个奇数的位置,和$n$即可。

    AC代码:

    #include <bits/stdc++.h>
    using namespace std;
    vector<int>ans;
    int main()
    {
        int T,n,a,k,odd,even;
        cin>>T;
        while(T--)
        {
            ans.clear();
            odd=even=0;
            cin>>n>>k;
            for(int i=1;i<=n;++i)
            {
                cin>>a;
                if(a%2)
                    ++odd,ans.push_back(i);
                else
                    ++even;
            }
            if(odd<k)
                cout<<"NO"<<endl;
            else if((k-odd)%2)
                cout<<"NO"<<endl;
            else
            {
                cout<<"YES"<<endl;
                for(int i=0;i<k-1;++i)
                    cout<<ans[i]<<" ";
                cout<<n<<endl;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    购物车宣传页
    项目开发流程
    AJAX跨域
    jQuery中的AJAX
    AJAX封装
    AJAX里使用模板引擎
    AJAX的具体使用
    AJAX的基本使用
    js技巧汇总
    CSS特效汇集
  • 原文地址:https://www.cnblogs.com/Aya-Uchida/p/11255024.html
Copyright © 2011-2022 走看看