模擬賽 班服

2022-05-23 15:51:06 字數 1322 閱讀 9467

班服

(shirt.pas/.c/.cpp)

時間限制:1s;記憶體限制 128mb

題目描述:

要開運動會了,神犇學校的n個班級要選班服,班服共有100種樣式,編號1~100

。現在每個班都挑出了一些樣式待選,每個班最多有100個待選的樣式。要求每個班最終選定一種樣式作為班服,且該班的樣式不能與其他班級的相同,求所有可能方案的總數,由於方案總數可能很大,所以要求輸出mod 1000000007後的答案。

輸入描述:

共有t組資料。

對於每組資料,第一行為乙個整數n,表示有n個班級。

2~n+1行,每行有最多100個數字,表示第i-1班待選班服的編號。

輸出描述:

對於每組資料,輸出方案總數 mod 1000000007後的答案。

樣例輸入:23

510012

510023

58100樣例輸出:44

資料範圍:

對於30%的資料,1

<=t<=3, 1

<=n<=3

,每班待選樣式不超過10種。

對於50%的資料,1

<=t<=5, 1

<=n<=5

,每班待選樣式不超過50種。

對於100%的資料,1

<=t<=10, 1

<=n<=10,每班待選樣式不超過100種。

題目芒果君:考試的時候完全沒看出來這題是狀壓dp,還想了好久的組合數學……最後只能打暴力qaq

這道題的n很小(10),可以說是一種提示。那我們可以用二進位制來表示n被選擇的狀態,末狀態是(1<

1 #include2 #include3 #include4 #include5 #include6 #include7

#define ll long long

8#define eps 1e-8

9using

namespace

std;

10const

int mod=1e9+7;11

int t,n,x,mp[110][110],f[110][1

<<11

];12

intmain()

1326

}27 f[0][0]=1;28

for(int i=1;i<=100;++i)

29for(int j=0;j

35 printf("

%d\n

",f[100][(1

<1

]);36}37

return0;

38 }

班服 狀壓DP NOIP模擬賽

沒有題面。看到這個坑爹的資料量 最多10個班級 大概會對狀壓有一些想法 反正我是沒想到 本題暴搜可得50分 從資料量可以看出 狀態壓縮壓縮的是已選擇的班級而不可能是班服種類。dp i j 表示 前i種班服到達狀態j的方案數。首先,如果不選第i種班服,那麼dp i j dp i 1 j 如果要選第i種...

《省賽模擬賽補》

c題 比賽的時候已經想到了統計最底層的每個序列的出現次數,但是一開始想的是建圖之後dfs處理,但是發現很難處理出來。其實正確的思路是拓撲排序去處理次數。我們在最後建圖完成之後,倒著從n回去拓撲即可。但是這裡有個坑點,就是一開始統計入度可能是不正確的。例如 3 1 2 4 1 2 3是1,2的父節點,...

日常模擬賽

none 100 100 10 210 不太會做.好像.是個sb題.嗯.div3t1難度 include include define int long long define gc getchar define pc putchar inline int read void print int x...