zoukankan      html  css  js  c++  java
  • #452 Div2 Problem C Dividing the numbers ( 思维 || 构造 )

    题意 : 将从 1 ~ n 的数分成两组,要求两组和的差值尽可能小,并输出其中一组的具体选数情况

    分析 : 如果将这 n 个数从大到小四个一组来进行选择的话那么差值就为 0 ,然后再来考虑 n%4 != 0 的情况。举个例子就是 n = 9 的时候,我们考虑 6 7 8 9 ,将6、9放入一组,7、8放入第二组,那么此时差值就会为 0 ,接下来再对 2 3 4 5 进行同样的取法此时差值仍为 0 ,最后剩下一个 1 ,很显然最后的最小差值应当为 1 。其实综合考虑一下 n%4 != 0 的情况只有 4 种,只有 n%3==3 or 0 的时候差值才能为 0 否则为 1,接下来只要模拟取的过程即可。

    #include<bits/stdc++.h>
    using namespace std;
    
    int main(void)
    {
        int n;
        while(~scanf("%d", &n)){
            if(n==3){
                puts("0
    1 3");
                continue;
            }
    
            if(n%4==0 || n%4==3) puts("0");
            else puts("1");
    
            int num = n/4 * 2 + (n%4!=0);
            printf("%d ", num);
    
            for(int i=n; i>=4; i-=4)
                printf("%d %d ", i, i-3);
            if(n%4==3) puts("3");
            else if(n%4==2 || n%4==1) puts("1");
            else puts("");
        }
    
        return 0;
    }
    View Code
  • 相关阅读:
    洛谷 P1231 教辅的组成
    BZOJ 2190: [SDOI2008]仪仗队
    Codeforces GYM 100741A . Queries
    COGS 1298. 通讯问题
    洛谷 P2604 [ZJOI2010]网络扩容
    codevs 1227 方格取数 2
    codevs 1004 四子连棋
    洛谷 P2319 [HNOI2006]超级英雄
    洛谷 P2153 [SDOI2009]晨跑
    插入排序
  • 原文地址:https://www.cnblogs.com/qwertiLH/p/8094986.html
Copyright © 2011-2022 走看看