题意:nnn件物品,每种物品有一个种类tit_iti,四个属性ai,bi,ci,dia_i,b_i,c_i,d_iai,bi,ci,di,每个种类最多选一件物品,求
(100+∑ai)(100+∑bi)(100+∑ci)(100+∑di)(100+\sum a_i)(100+\sum b_i)(100+\sum c_i)(100+\sum d_i)(100+∑ai)(100+∑bi)(100+∑ci)(100+∑di)
的最大值
n,ti≤50,ai,bi,ci,di≥1,T≤10n,t_i\leq 50,a_i,b_i,c_i,d_i\geq 1,T\leq 10n,ti≤50,ai,bi,ci,di≥1,T≤10
显然对于有物品的种类一定会选一个
设种类iii的物品数为cnticnt_icnti。注意到∑cnti≤50\sum cnt_i\leq 50∑cnti≤50,所以暴搜复杂度为O(∏max(1,cnti))O(\prod \max(1,cnt_i))O(∏max(1,cnti))。根据小学奥数,最坏情况为316×2×103^{16}\times 2\times 10316×2×10,可以通过。
注意对于cnti=0cnt_i=0cnti=0的iii,如果在递归时跳到下一层,会把搜索树上下一层的结点复制一遍,而上面的最坏情况会复制333333次,会TLE。解决方法是在搜索前把没有物品的种类删掉。
代码略