十二省聯考2019 皮配

2022-02-04 23:58:48 字數 2426 閱讀 4757

[十二省聯考2019]皮配

巧妙運用「獨立」的性質,對於「不獨立」的進行暴力處理,再合併

1.dp[i][j][k]前i個城市,藍有j,鴨有k個方案數

2.無限制時,城市的陣營和學校的派系獨立,直接dp出城市選擇方案,派系選擇方案,直接乘起來。顯然唯一分配且一一對應

有限制,只有30個

考慮對於有限制的城市,優先考慮這些城市的陣營和這個城市中學校的派系分配。

f[i][j][k],前i個有限制的城市,「總共學校佔藍色陣營j個」,有限制的學校佔鴨k個

對於沒有限制的,

g[i][j]前i個無限制城市,佔藍色陣營j個,

h[i][j]前i個無限制學校,佔鴨派系j個

最後列舉j,k,處理出g,h的取值範圍,然後乘起來就是方案

考慮每個答案會被統計的位置,顯然還是一一對應的。

注意:1.取mod

2.區間下界可能<0,

3.是「總共學校佔藍色陣營j個」!!!!!!而不是僅考慮限制城市中的限制學校。

mdzz

#include#define reg register int

#define il inline

#define fi first

#define se second

#define solid const auto &

#define mk(a,b) make_pair(a,b)

#define numb (ch^'0')

using

namespace

std;

typedef

long

long

ll;template

il void rd(t &x)

template

il void output(t x)

template

il void ot(t x)

template

il void prt(t a,int st,int nd)

namespace

miracle

void cpy(int f[m][m],int g[m][m],int a,int

b) }

}void

clear()

}int

main()

//memset(no,-1,sizeof no);

//memset(sz,0,sizeof sz);

//memset(has,0,sizeof has);

rd(k);

intx;

for(reg i=1;i<=k;++i)

f[0][0]=1

;

int now=0

;

for(reg o=1;o<=c;++o)

if(no[id]!=1

) }}}

//cout<<" sum1 "=0;--i)}}

cpy(q,f,sum1,sum2);

sum1=min(c0,now+has[o]);

sum2=min(d0,now+has[o]);

for(auto id:city[o])

if(no[id]!=3

) //}

} }

}for(reg i=0;i<=sum1;++i)

}now+=has[o];

}//for(reg i=0;i<=c0;++i)

//}cout0]=1

;

int s=0

;

for(reg i=1;i<=c;++i)}h[

0]=1

; s=0

;

for(reg i=1;i<=n;++i)

}//prt(g,0,c0);

//prt(h,0,d0);

for(reg i=1;i<=c0;++i) g[i]=ad(g[i],g[i-1

]);

for(reg i=1;i<=d0;++i) h[i]=ad(h[i],h[i-1

]); ll ans=0

;

for(reg i=0;i<=c0;++i)

ans=ad(ans,(ll)f[i][j]*ad(g[h1],mod-((l1>=0)?g[l1]:0))%mod*ad(h[h2],mod-((l2>=0)?h[l2]:0))%mod);}}

cout

}return0;

}}signed main()

/*author: *miracle*

*/

十二省聯考 2019 皮配

你有 n 個集合,每個集合裡有一些非負整數。有 4 個桶,現在要把每個非負整數放入其中 1 個桶。限制條件 1.同一集合的所有數要麼都放入第 1,2 個桶,要麼都放入第 3,4 個桶。2.有 k 個數有特殊要求 不能放入前 2 個桶或不能放入後 2 個桶。3.設 cnt i 為第 i 個桶放的數的總...

十二省聯考2019 皮配

題目 十二省聯考2019 皮配 設s等於各學校人數之和。首先,有乙個很簡單的 o nm 2 的 dp 記錄當前考慮到哪所學校,以及藍陣營人數a,鴨派系人數b,最後,只要滿足 s c1 a c0 且 s d1 b d0 這個方案就是合法的。寫上這個就有50分了。注意到還有20分滿足 k 0 即沒有限制...

十二省聯考 2019 皮配

這是一道揹包計數問題,所以可以從生成函式的角度來理解。每個選手可選擇的是陣營 0 1 以及派系 0 1 如果乙個城市選擇了第 i 陣營第 j 派系,那麼相當於分別讓陣營 i 和派系 j 的代價 s i 設乙個沒有任何限制的學校的生成函式為 1 x y x y 其中 x 表示陣營 1 y 表示派系 1...