C. Beauty Pageant 思维+贪心
http://codeforces.com/contest/246/problem/C
题意:
给定n个数,给出k值;n, k (1 ≤ n ≤ 50; 1 ≤ k ≤   )  求出k个不同的数,这些数是由n个不同的数里面选出来组合成的。这里保证有解,并且n个数不同。
)  求出k个不同的数,这些数是由n个不同的数里面选出来组合成的。这里保证有解,并且n个数不同。
思路:
做CF真心考思维啊,大牛们几分钟秒杀的题目,自己还是没有想出来。自己做的题目数量还是太少。
想暴利搞搞来,一看2^50次方搞个毛啊。。一直没能想出什么好办法来。
赛后一看别人的代码才恍然大悟,注意k的取值,我们是否想到了n + n -1 + n - 2 + ...... + 1是的,解决的关键就在这。
我们把n个数从大到小排序,枚举一下组合中数的个数i,然后用i - 1个能组合出来的最大值分别于其余的数组和,这样组和出来的数肯定不同而且是递增。而且最大我们能够得到n + n -1 + ... + 1 个数,所以满足条件。
关键在于从小到大的顺序的吧可能的组和输出....思维啊...
By E_star, contest: Codeforces Round #151 (Div. 2), problem: (C) Beauty Pageant, Accepted, #
 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>
#define CL(a,num) memset((a),(num),sizeof(a))
#define iabs(x)  ((x) > 0 ? (x) : -(x))
#define Min(a,b) (a) > (b)? (b):(a)
#define Max(a,b) (a) > (b)? (a):(b)
#define ll long long
#define inf 0x7f7f7f7f
#define MOD 1073741824
#define lc l,m,rt<<1
#define rc m + 1,r,rt<<1|1
#define pi acos(-1.0)
#define test puts("<------------------->")
#define maxn 100007
#define M 107
#define N 57
using namespace std;
//freopen("din.txt","r",stdin);
int n,k;
int a[N],b[N];
int main()
{
    int i,j;
    while (~scanf("%d%d",&n,&k))
    {
        for (i = 0; i < n; ++i)
        {
            scanf("%d",&a[i]);
            b[i] = a[i];
        }
        sort(a,a + n); sort(b,b + n);
        reverse(b,b + n);
        for (i = 1; i <= n; ++i)
        {
            int tmp = n - i + 1;
            int r = 0;
            while (tmp)
            {
                printf("%d",i);
                for (j = 0; j < i - 1; ++j) printf(" %d",b[j]);
                printf(" %d",a[r]); r++;
                printf("\n");
                tmp--;
                k--;
                if (k == 0) break;
            }
            if (k == 0) break;
        }
    }
    return 0;
}
 
                     
                    
                 
                    
                

 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号