Baltic 2010 Candies

来源:互联网 发布:南箫制作数据 编辑:程序博客网 时间:2024/05/04 08:25

http://www.cppblog.com/jsn1993/archive/2010/05/21/116026.html 上有一个很不错的方法,但可惜最坏情况下区间数还是O(n)级别的(b[1], b[2], ..., b[i]分别为2^i,后面的都取7000, 则所有偶数都可以组合出来,奇数都不可组合出来),因此其动规还是O(N^3)级别的。如果分组优化,把每组的大小设为(sqrt(n*4+1)+1)/2,可以把最坏情况的复杂度降至O(n^2.5)。

 

后来看了官方题解,发现其方法非常巧妙,核心为以下函数:

Algorithm 1 generate((p1 , p2 , p3 , ..., pm ), S)
 if m = 1 then
    S is one of the desired structures
 else
    S1 = add(S, (p1 , p2 , ..., p m/2 ))
    S2 = add(S, (p m/2 +1 , ..., pm ))
    generate((p m/2+1 , ..., pm ), S1 )
    generate((p1 , p2 , ..., p m/2 ), S2 )
 end if

 

参数中S为已经获得的可组合出的数,p1..pm为要加入的包。该算法可在O(B * n * m log m)内运行完毕,并能获得S加上p的所有m-1个元素的子集所能得到的组合结果。

由于官方数据比较厚道,区间数很少,我想到在以上算法的基础上加上区间处理的优化,于是程序运行的效果非常好……

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝手机号码被注册了怎么办 淘宝不支持七天无理由退货怎么办 微信视频横屏怎么办 房子里潮气太重怎么办 淘宝不小心注销了怎么办 淘宝号不小心注销了怎么办 xp网络驱动没了怎么办 淘宝卖家客服态度差怎么办 怀孕吃辣椒喉咙好痛怎么办 淘宝店铺建议不要提交认证怎么办 淘宝买东西商家不退款怎么办 淘宝买东西商家不发货怎么办 在微信上买东西被骗了怎么办 新浪微博自动关注人怎么办 搜淘宝找不到关键词和店铺怎么办 小超市开在一起竞争太大怎么办 淘宝店铺被投诉盗图怎么办 充电宝ic坏了怎么办 淘宝店宝贝权重下降怎么办 淘宝卖家评分低怎么办 淘宝买东西客服不理人怎么办 支付宝本次交易嫌疑违规怎么办 支付宝一年的交易总额怎么办 交易关闭钱扣了怎么办 交易猫账号绑定支付宝打不开怎么办 拼多多涉假处罚怎么办 淘宝店铺重复铺货扣6分怎么办 帆布鞋子买大了怎么办 开淘宝店没销量怎么办 开淘宝店没有销量怎么办 淘宝买东西支付密码错了怎么办 淘宝登入密码忘记了怎么办 逛街时手机没电了怎么办 逛街手机没有电了怎么办 卖家拒收退回来怎么办 群英会奖池钱不够买超了怎么办 三星s8卡顿严重怎么办 三星s8变卡了怎么办 新开店铺没有人怎么办 电视显示没有usb设备怎么办 华为平板电脑触摸屏没反应怎么办