【杭电多校2020】Lead of Wisdom【搜索】【复杂度证明】

题意: n n n件物品,每种物品有一个种类 t i t_i ti,四个属性 a i , b i , c i , d i a_i,b_i,c_i,d_i ai,bi,ci,di,每个种类最多选一件物品,求

( 100 + ∑ a i ) ( 100 + ∑ b i ) ( 100 + ∑ c i ) ( 100 + ∑ d i ) (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 , t i ≤ 50 , a i , b i , c i , d i ≥ 1 , T ≤ 10 n,t_i\leq 50,a_i,b_i,c_i,d_i\geq 1,T\leq 10 n,ti50,ai,bi,ci,di1,T10

显然对于有物品的种类一定会选一个

设种类 i i i的物品数为 c n t i cnt_i cnti。注意到 ∑ c n t i ≤ 50 \sum cnt_i\leq 50 cnti50,所以暴搜复杂度为 O ( ∏ max ⁡ ( 1 , c n t i ) ) O(\prod \max(1,cnt_i)) O(max(1,cnti))。根据小学奥数,最坏情况为 3 16 × 2 × 10 3^{16}\times 2\times 10 316×2×10,可以通过。

注意对于 c n t i = 0 cnt_i=0 cnti=0 i i i,如果在递归时跳到下一层,会把搜索树上下一层的结点复制一遍,而上面的最坏情况会复制 33 33 33次,会TLE。解决方法是在搜索前把没有物品的种类删掉。

代码略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值