zoukankan      html  css  js  c++  java
  • [CF598E] Chocolate Bar

    [CF598E] Chocolate Bar - dp

    Description

    (n×m) 的巧克力块切若干次,使得形成的若干个碎片的大小和为 (k) 的最小花费,每切的费用是切长的平方 (n,mle 30, k le 50)

    Solution

    (f[i][j][k]) 表示 (i imes j) 的巧克力得到大小为 (k) 的巧克力的最小花费

    暴力切割转移枚举分配

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    const int N = 55;
    
    int f[N][N][N];
    
    signed main()
    {
        memset(f, 0x3f, sizeof f);
        for (int i = 1; i <= 30; i++)
            for (int j = 1; j <= 30; j++)
                if (i * j <= 50)
                    f[i][j][i * j] = 0;
        for (int i = 1; i <= 30; i++)
            for (int j = 1; j <= 30; j++)
                f[i][j][0] = 0;
        for (int i = 1; i <= 30; i++)
        {
            for (int j = 1; j <= 30; j++)
            {
                for (int k = 1; k <= 50; k++)
                {
                    for (int x = 1; x < i; x++)
                    {
                        for (int y = 0; y <= k; y++)
                        {
                            f[i][j][k] = min(f[i][j][k], f[x][j][y] + f[i - x][j][k - y] + j * j);
                        }
                    }
                    for (int x = 1; x < j; x++)
                    {
                        for (int y = 0; y <= k; y++)
                        {
                            f[i][j][k] = min(f[i][j][k], f[i][x][y] + f[i][j - x][k - y] + i * i);
                        }
                    }
                }
            }
        }
        int t;
        cin >> t;
        while (t--)
        {
            int n, m, k;
            cin >> n >> m >> k;
            cout << f[n][m][k] << endl;
        }
    }
    
  • 相关阅读:
    【MyLocations】标记位置App开发体会
    iOS开发-Core Location和Map Kit
    iOS开发-轻点、触摸和手势
    iOS开发-GCD和后台处理
    iOS开发-block使用与多线程
    iOS开发-数据持久化
    iOS开发-为程序添加应用设置
    对iOS中MVC的理解
    docker
    linux shell
  • 原文地址:https://www.cnblogs.com/mollnn/p/14618767.html
Copyright © 2011-2022 走看看