P1731 生日蛋糕 做题记录

news/2025/9/27 11:16:34/文章来源:https://www.cnblogs.com/blacksunrise/p/19114870

洛谷P1731 生日蛋糕 做题记录

题意简述

一个生日蛋糕由几个圆柱体组成,每个圆柱体的底面半径和高从下到上严格递减,现给出蛋糕的体积 N pi 以及层数 M,试求蛋糕的最小表面积。

思路速通

基本为 DFS ,对于每层的半径以及高度进行枚举,然后增加一些剪枝。
以下为较为重要的剪枝:

  1. 体积明显不够剩下的层数进行分配时 return;
  2. 当前体积已经>n时return;
  3. 当前已经累加出的表面积明显大于当前已经算出的最小总表面积时 return;
  4. 当前已经累加出的表面积与剩下部分最小的表面积之和明显打与当前已经算出的最小总表面积时 return ;

代码实现

#include<bits/stdc++.h>
#define bot r[1]*r[1]
using namespace std;
const int inf=2147483647;
int n,m;
int r[25],h[25];
int minn=inf;void dfs(int now,int v_last,int s,int last_m){if(last_m<0){return ;}if(v_last<0){return ;}//体积>n时剪枝if(s>=minn){return ;}if(v_last==0&&!last_m){s+=bot;minn=min(minn,s);return ;}if(s+last_m*2+bot>minn){return ;}//当前表面积与剩余最小表面积相加之和大于当前已经算出的最小总表面积时剪枝if(v_last>r[now-1]*r[now-1]*h[now-1]*last_m){return ;}//当前剩余体积不够剩余的最大体积分配时剪枝for(int i=r[now-1]-1;i>=last_m;i--){//枚举半径for(int j=h[now-1]-1;j>=last_m;j--){//枚举高度if(v_last>=i*i*j&&now+1<=m+1){r[now]=i;h[now]=j;dfs(now+1,v_last-i*i*j,s+2*i*j,last_m-1);r[now]=0;h[now]=0;}}}return ;
}int main() {scanf("%d %d",&n,&m);if(m==1){//只有一层时特判//朴素暴力for(int i=n;i>=1;i--){for(int j=n;j>=1;j--){if(i*i*j==n){minn=min(minn,2*i*j+i*i);}}}printf("%d",(minn==inf?0:minn));return 0;}r[0]=(int)sqrt(n);h[0]=(int)sqrt(n);dfs(1,n,0,m);printf("%d",(minn==inf?0:minn));//最终还要判断是否有方案return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细介绍:【MySQL】MySQL数据库入门指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何有效提升代码覆盖率:从单元测试到集成测试的实践指南

Go语言代码覆盖率实现 一、什么是代码覆盖率代码覆盖率是软件测试中的一种白盒测试度量指标,表示程序源代码中被执行的比例。简单来说,就是“我的测试到底跑过多少代码”。 覆盖率常见的几种标准:语句覆盖(段覆盖、…

深入解析:SSM网络游戏交易系统a9n72(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

深入解析:SSM网络游戏交易系统a9n72(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto …

Spring知识点(2)

一、有哪些依赖注入方式?构造方法注入:通过调用类的构造方法,推荐用于强依赖(没有依赖对象就没法工作)。这也是官方推荐的注入方式。好处:依赖不可变(final修饰)、更安全。@Component public class UserServic…

成都电子商务网站建设非寻服饰网站建设规划书

文章目录 “预训练微调大模型”的模式以提示/指令模式直接使用大模型“预训练微调大模型”模式和Prompt/Instruct模式的异同小结 “预训练微调大模型”的模式 经过预训练的大模型所习得的语义信息和所蕴含的语言知识&#xff0c;很容易向下游任务迁移。NLP应用人员可以根据自己…

超越实习期的AI自动化工具:播客工作流与Slack导出器实战

本文详细介绍实习期间基于Claude AI模型开发的两个自动化工具:播客工作流年省1250小时人工,Slack导出器实现智能知识检索。包含技术架构、问题解决方案和实际应用效果,展现AI如何增强企业工作效率。超越实习期的实习…

调度器的各项指标以及计算方式

CPU利用率 \[利用率=\frac{忙碌的时间}{总时间} \]系统吞吐量 单位时间内完成作业的数量 \[系统吞吐量=\frac{总共完成了多少道作业}{总共花了多少时间} \]周转时间 1.周转时间-平均周转时间\[作业周转时间=作业完成时…

​CentOS 7 安装 net-tools.rpm 包步骤详解(附 rpm 命令和 yum 方法)​附安装包

​CentOS 7 安装 net-tools.rpm 包步骤详解(附 rpm 命令和 yum 方法)​附安装包​一、先确认你的系统是 CentOS 7 或 RHEL 7 这个包是专门给 ​CentOS 7​ 或者 ​RHEL 7​(也就是 64 位系统)用的,文件名里的 el7…

青原区城乡建设局门户网站网站建设的系统简介

Kibana是一个开源的分析与可视化平台&#xff0c;设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。是es的可视化客户端之一。 一&#xff1a;下载 https://www.elastic.co/cn/kibana 我的es是elasticsearch-7.10.2版本&#x…

深入解析:【Linux】UDP 网络编程

深入解析:【Linux】UDP 网络编程2025-09-27 11:02 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

浅谈dsu on tree

前言 先学树剖。 讲讲启发式合并,最经典的就是并查集的按秩合并,这里不细讲。 常用的启发式合并就是小集合合并到大集合上,复杂度从 \(O(n^2)\) 优化至 \(O(n \log n)\)。 例题 P3201 [HNOI2009] 梦幻布丁 题目描述…

天河手机网站建设网站建设 讲话

目录 pod启动创建过程 kubelet持续监听的原因 调度概念 调度约束 调度过程 优点 原理 优先级选项 示例 指定调度节点 标签基本操作 获取标签帮助 添加标签&#xff08;Add Labels&#xff09;&#xff1a; 更新标签&#xff08;Update Labels&#xff09; 删除标…

Linux目录下有100百万个文件,如何快速删除

Linux目录下有100百万个文件,如何快速删除Linux目录下有100百万个文件,如何快速删除 利用rsync命令 例:删除/root/files目录下的所有文件ls -l -f /root/files > /tmp/filelist.txt //将目录下的所有文件整理到/…

JavaDay10

Super详解 super注意点: ​ 1.super调用父类的构造方法,必须在构造方法的第一个 ​ 2.super必须只能出现在子类的方法或者构造方法中! ​ 3.super和this不能同时调用构造方法 对比 this: ​ 代表的对象不同: ​ …

29.Linux防火墙管理 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【转】中国信通院《低代码产业发展研究报告(2025年)》核心解读

【转】中国信通院《低代码产业发展研究报告(2025年)》核心解读中国信通院(CAICT)于2025年6月发布的《低代码产业发展研究报告》是中国低代码行业发展的权威性风向标。这份报告不仅全面梳理了低代码市场的最新发展现…

【C++】内存管理 - 指南

【C++】内存管理 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

昇腾多机推理极速上手:10倍简化的 DeepSeek R1 超大规模模型部署

昇腾多机推理太复杂?易出错?试试 GPUStack在昇腾 NPU 上部署超大规模模型,往往面临一个现实难题:目前主流的官方推理引擎 MindIE 的多机分布式推理虽然性能表现尚可,但配置流程异常复杂。从环境准备、配置初始化到…

python开始exe应用程序初级教程

以下是一个关于如何将Python脚本打包成可执行文件(.exe)的初级教程,使用目前最常用的PyInstaller工具。 准备工作 首先需要安装PyInstaller,打开命令提示符(CMD)或终端,运行以下命令: pip install pyinstaller…

中职校园网站建设建议制作网页的思路

cp -rpf #强行递归复制/etc目录到/mist目录中&#xff0c;并保持源目录的权限等信息不变。 有点类似于打patch&#xff0c;不会改变已有的内容。