zoukankan      html  css  js  c++  java
  • Codeforces 246C

    题意略。

    思路:

    我们将数组中的数字从大到小排列,分别考虑取前0 + 1,1 + 1,2 + 1.....个的情况。

    所谓i + 1的意思是,取前i个的时候,同时取第[i + 1],[i + 2],......,[n]个元素。这样产生的是一个递减的和。

    我们将取前 i 个的这种情况定义为第 i 类。我们知道第 i 类的最大值也小于第 i+1 类的最小值。因此可以产生不重叠的sum和。

    详见代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 100;
    
    int ai[maxn];
    
    bool cmp(const int& a,const int& b){
        return a > b;
    }
    
    int main(){
        int n,k;
        scanf("%d%d",&n,&k);
        for(int i = 1;i <= n;++i) scanf("%d",&ai[i]);
        sort(ai + 1,ai + 1 + n,cmp);
        for(int i = 1,cnt = 0;i <= n && cnt < k;++i){
            for(int j = i;j <= n && cnt < k;++j){
                printf("%d",i);
                for(int k = 1;k <= i - 1;++k)
                    printf(" %d",ai[k]);
                printf(" %d
    ",ai[j]);
                ++cnt;
            }
        }
        return 0;
    }
  • 相关阅读:
    深度优先和广度优先
    ajax<转>
    display:inline-block后会有间隙
    css样式多了个分号
    回答
    return false作用
    824. Goat Latin
    7. Reverse Integer
    48. Rotate Image
    9. Palindrome Number
  • 原文地址:https://www.cnblogs.com/tiberius/p/9407298.html
Copyright © 2011-2022 走看看