当前位置: 首页 > news >正文

【生日蛋糕——DFS剪枝优化】

题目

分析

代码

#include <bits/stdc++.h>
using namespace std;

const int N = 24;
const int inf = 0x3f3f3f3f;

int mins[N], minv[N];
int R[N], H[N];
int n, m, ans = inf;

void dfs(int u, int v, int s)
{
    if(v + minv[u] > n) return;
    
    if(s + mins[u] >= ans) return;
    if(s + 2 * (n - v) / R[u+1] >= ans) return;
    
    if(!u)
    {
        if(v == n) ans = s;
        return;
    }
    
    for(int r = min( R[u+1]-1, (int)sqrt((n - minv[u-1] - v) / u) ); r >= u; r--)
        for(int h = min( H[u+1]-1, (n - minv[u-1] - v) / r / r); h >= u; h--)
        {
            R[u] = r, H[u] = h;
            int t = u == m ? r * r : 0;
            dfs(u-1, v + r*r*h, s + 2*r*h + t);
        }
}
int main()
{
    scanf("%d%d", &n, &m);
    
    for(int i = 1; i <= m; i++)
    {
        minv[i] = minv[i-1] + i * i * i;
        mins[i] = mins[i-1] + 2 * i * i;
    }
    
    R[m+1] = H[m+1] = inf;
    dfs(m, 0, 0);
    
    if(ans > inf / 2) ans = 0;
    printf("%d", ans);
}

相关文章:

  • Vue Date 今天的开始时间与结束时间
  • 【小沐学Web3D】three.js 加载三维模型(vue3)
  • HCIA-AI人工智能笔记1:大模型技术演进与发展历程
  • Jetson Nano NX 重装系统
  • 2024年12月CCF-GESP编程能力等级认证C++编程一级真题解析
  • Mysql查看执行计划、explain关键字详解(超详细)
  • 《Electron 学习之旅:从入门到实践》
  • CSSHTML新特性
  • VUE中VNode(虚拟节点)是个啥?
  • 浅谈AI落地之-加速训练
  • 【Unity3d】角色穿墙问题
  • C# --- LINQ
  • 【鸿蒙】封装日志工具类 ohos.hilog打印日志
  • 3.6、数字签名
  • 模拟String基本函数/深浅拷贝/柔性数组
  • Redis 详解
  • Spring @Bean注解使用场景二
  • HOT100——链表篇Leetcode234. 回文链表
  • Harmony OS NEXT API 12核心API深度解析与开发实践
  • python基础
  • jsp网站维护/怎么制作网页推广
  • 亚马逊品牌备案网站怎么做/网站目录扫描
  • 网站建设设计原则/搜索引擎优化包括哪些方面
  • 炫酷的电商网站设计/seo博客写作
  • 直播网站开发平台/营销战略有哪些内容
  • 乔智云智能建站/今日新闻摘抄10条简短