Codeforces Problem 598E - Chocolate Bar

来源:互联网 发布:免费申请域名的步骤 编辑:程序博客网 时间:2024/05/17 21:06

Educational Codeforces Round 1 E. Chocolate Bar

  • 题意:
    有一个n*m(1<= n,m<=30)的矩形巧克力,每次能横向或者是纵向切,且每次切的花费为所切边长的平方,问你最后得到k个单位巧克力( k <= min(n*m,50) )的最小花费是多少?
  • 思路:
    数据规模不大,但是贪心不能得到最优解,很自然想到了dp;里面涉及到行的减少和列的减少,在dp[][]表示中必定要以行数和列数作为dp的含义,但是好像这还不够,如果单单只是一个二维的dp[][]那这个表示的是取了(或者还需)几个单位巧克力呢?
    ==>三维dp[n][m][k]:当还剩下n行m列还需要取k个单位巧克力时的最小花费;
    转移式就是对每个”可切”的行||列遍历,取最小的花费;注意将n,m分开后,还要对之后各自所要得到的巧克力的数量进行划分,即对k进行遍历(从0开始);即dp数组作为记忆,否则直接dfs会TLE.

code:
http://paste.ubuntu.com/14627331/

0 0