[十二省聯考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...