大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  信息学奥赛>>解题报告>>《破译密码》解题报告         本站全文搜索: 友情提示:

《破译密码》解题报告
http://www.mydrs.org  12/14/2001  大榕树


题目大意:

问题要求求出一串数中添加m个加号,n个减号和不多于p个括号的最小值。由于每个数字是由1~9的数字组成,所以不必考虑以0开头的情况。

 

分析:

首先我们来考虑只添加m个加号的情况,很显然简化后的问题满足最优化原理,可以用动态规划解决。用d[I,j]表示前I个数中添j个加号的最小值,l(I,j)表示把I~j的数字看成一个数的值。

其动态方程如下:

  d[I,j]=min{d[k,j-1]+l(k+1,i)}(I>=j,j-1<=k<=I-1)

    再来考虑只添加n个减号的情况,由于不能在数串添加减号,所以就必须拿出第一个数来作牺牲。现在假设abcdefg添加2个减号的最小值为a-bcdef-g。因为a-bcdef-g=a-(bcdef+g),所以只要求出bcdefg添1个加号的最大值,问题就解决了。求最大值的方法与求最小值类似,其动态方程如下:

 d[I,j]=max{d[k,j-1]+l(k+1,i)}(I>=j,j-1<=k<=I-1)

最后来考虑同时添加号,减号的情况。因为题目要求添加不多于p个的括号,所以我们在值最优的前提下必须尽量减少添加括号的数目,使其控制在p以内。我们发现可以对任何一个一般情况进行化简,使其在最优值不变的前提下,减少括号的数目。

例如最优值出现在a-(b+(c-de)+fgh)-ij-(kl+mn);

a-(b+(c+de)+fgh)-ij-(kl+mn)

   =a-b-c-de-fgh-ij-kl-mn

   =a-(b+c+de+fgh)-ij-kl-mn

所以无论什么情况均可以转换成只添加一个加号的情况。又因为1<=p,所以问题就可以进行进一步转化为只有减号的情况,且不添括号的情况。例如:

a-(b+c+de+fgh)-ij-kl-mn= a-b-c-de-fgh-ij-kl-mn.

 

总结:

     因为p大于1,所以p的值对问题的答案就产生不了影响,可不必考虑。当n=0时,问题就可以转化为添加m个加号且不添加括号;当n>0时,问题就转化为添加m+n个减号的情况(可以先求扣去第一个数字后添加m+n-1个加号)。由于问题答案与中间得数均较大,应采用高精度计算,动态规划可采用双阶段滚筒式方法优化问题的空间需求。


作 者:方润
来 源:福建师大附中
共有2229位读者阅读过此文

  • 上篇文章第七届分区联赛提高组数据
  • 下篇文章《网络传输问题》解题报告

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8306]
    2. 七类高中生具有保送资格 [5910]
    3. NOI2006获奖选手名单 [4955]
    4. 关于举办NOIP2006模拟赛的通告 [4106]
    5. Turbo Pascal各语句运行速... [3594]
    6. Turbo王者归来新Delphi免费... [3181]
    7. IOI2006我国4名选手全部获得金... [2945]
    8. 关于APIO2007与IOI2007... [2763]
    9. noip倒计时 by 枯叶蝴蝶 [2683]
    10. 朱泽园:思想上的金牌更重要 [2168]
    SGOI第14次友谊赛成绩
    SGOI-14友谊赛测试数据
    SGOI14友谊赛试题
    SGOI第十三次友谊赛数据
    SGOI第13次友谊赛成绩揭晓
    SGOI第十三次友谊赛试题
    SGOI第13次友谊赛竞赛规则
    Sgoi12之《黑白瓷砖》
    《哈利·波特与魔法石》
    Sgoi12之《网络传输》
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号