Codeforces Round #640 (Div. 4) B. Same Parity Summands(思维)

题目点这里

题意

给你一个数n要求分成k份且每份奇偶性相同,可以实现则输出YES和其中一种可能,否则输出NO。

思路

我们可以分成两大类考虑:分成k份由奇数构成和k份偶数构成。
1.奇数构成的情况:
先将k个桶里都放入一个1,则剩下n-k个数。若n-k为偶数,则把n-k都放入其中一个桶里,构成数组 1 1 1 1 …n-k+1 满足题目要求。若n-k为奇数,因为奇数只能拆成若干个偶数+奇数个奇数的形式,所以必然有几个桶里的数字由于这几个奇数变成偶数,不满足都是奇数的情况,输出NO。
2.偶数构成的情况:
类比奇数,k个桶每个放入一个2,判断n-2k的奇偶性,偶数则可行,输出
2 2 2 2 2 … n-2
k+2 否则NO。

AC代码

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5+10;

int main()
{
    int n,k,t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %d",&n,&k);
        if(n>=k&&(n-k)%2==0)
        {
            printf("YES\n");
            for(int i=0; i<k-1; i++)
                printf("%d ",1);
            printf("%d\n",n-k+1);
            continue;//这里的continue观摩某大佬学到的,省去了flag变量,很巧妙。
        }
        else if(n-2*k>=0&&(n-2*k)%2==0)
        {
            printf("YES\n");
            for(int i=0; i<k-1; i++)
                printf("%d ",2);
            printf("%d\n",n-2*k+2);
           continue;
        }
        printf("NO\n");
    }
    return 0;
}

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇