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;
        }
    }
    
  • 相关阅读:
    【JavaScript】--ajax
    【Django】--Models 和ORM以及admin配置
    【Django】--基础知识
    【jQuery】--图片轮播
    双系统 windows引导项添加
    LVM
    linux安全加固
    oracle 11G 配置侦听文件
    LVM
    《virtual san 最佳实践》节选 Virtual SAN的发展与现状
  • 原文地址:https://www.cnblogs.com/mollnn/p/14618767.html
Copyright © 2011-2022 走看看