1162. 【普及组模拟赛】最大杂置(set)

    xiaoxiao2026-09-20  2

    1162. 【普及组模拟赛】最大杂置(set) 

    题目描述

           令S为n个元素的集合,则S有2^n-1个子集(除去空集)。现在要你从这2^n-1个子集中选出最多的子集,使这些子集能构成一个杂置。 杂置是指任意两个集合没有包含或被包含的关系。例如对于有3个元素的集合{a,b,c}。 {a,b},{a,c},{b,c}可以构成一个杂置,而{a},{b},{a,b}则不能构成一个杂置。

    输入

    第一行一个t表示包括t组数据,接下来t行每行一个n。

    输出

    对于每组数据输出最大杂置包含的集合数。结果模12345678。

    样例输入

    3 1 2 3

    样例输出

    1 2 3

    提示

    【数据范围】 30%的数据t<=10。 100%的数据t<=3000,n<=3000。  

    啦啦啦啦,就是排列组合,用杨辉三角形表示就好了,啦啦啦啦

     

    const maxn=3000; var a:array[0..maxn,0..maxn] of longint; i,j,t,n:longint; begin assign(input,'set.in'); reset(input); assign(output,'set.out'); rewrite(output); readln(t); a[0,0]:=1; fori:=1 to 3000 do begin a[i,0]:=1; forj:=1 to i do a[i,j]:=(a[i-1,j]+a[i-1,j-1]) mod 12345678; end; fori:=1 to t do begin readln(n); writeln(a[n,n div 2]); end; close(input); close(output); end.

    转载请注明原文地址: https://ju.6miu.com/read-1312142.html
    最新回复(0)