poj1190 神剪枝啊

POJ1190 生日蛋糕(回溯法) cuicuiv-POJ刷题 点击此处跳转原题界面---->生日蛋糕 回溯法:是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 ——在回溯法中,每次扩大当前部分解时,都面临一个可选的状态集合,新的部分解就通过在该集合中选择构造而成。这样的状态集合,其结构是一棵多叉树,每个树结点代表一个可能的部分解,它的儿子是在它的基础上生成的其他部分解。 阅读详情
又见神剪枝啊,不加
2*v/R+tmp>=ans
这句话的话,是无法避免超时的
它的意思是:当前解+剩余资源的最优解>=最优解时,剪枝,有点像a*的估价函数
#include <iostream>
#include <cmath>
using namespace std;
int R,H,n,m,ans,mv[21],tmp;
void dfs(int v,int dep,int R,int H) {
     if (dep==0) {
                 if (v==0 && tmp<ans) ans=tmp;
                 return;
     }
     if (v-mv[dep-1]<0 || tmp>=ans || 2*v/R+tmp>=ans) return;
     for (int r=R-1;r>=dep;r--) {
         int Hm = min(H-1,(v-mv[dep-1])/r/r);
         for (int h=Hm;h>=dep;h--)
             if ((v-r*r*h)>=0) {
                if (dep==m) tmp=r*r;
                tmp+=2*r*h;
                dfs(v-r*r*h,dep-1,r,h);
                tmp-=2*r*h;
                if (dep==m) tmp=0;
             }
     }
}
int main() {
    memset(mv,0,sizeof(mv));
    for (int i=1;i<=m;i++)
        mv[i]=mv[i-1]+i*i*i;
    while (~scanf("%d%d",&n,&m)) {
          ans=10000000;
          dfs(n,m,n+1,n+1);
          if (ans==10000000) printf("0\n");
          else printf("%d\n",ans);
    }
    return 0;
}


剪枝总结 一、引子 剪枝,就是减小搜索树规模、尽早排除搜索树中不必要的分支的一种手段。 形象地看,就好像剪掉了搜索树的枝条,故被称为剪枝。 二、常见剪枝方法 1.优化搜索顺序 在一些问题中,搜索树的各个分支之间的顺序是不固定的 不同的搜索顺序会产生不同的搜索形态,规模也相差甚远 2.排除等效分支 在搜索过程中,如果我们能够得知搜索树的当前节点沿着 某几条不同分支到达的子树是等效的,那么只需... 阅读详情

相关推荐

poj_ 1190 生日蛋糕

描述 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 Ri+1且Hi > Hi+1。 由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 令Q = Sπ 请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。 (除Q外,以上所有数据皆为正整

写东西的地方 5628

POJ-1190生日蛋糕(详细题解)深度优先搜索

一、 > 如果搭建完剩余层所需的最小体积(min_v)比剩余可用体积($V-V_i,其中V_i$表示搭建底层蛋糕已经使用的体积)还要大,则说明题目所固定的体积**不够用**,此时应该减小底层固定的半径$R_i和H_i$,直到它们满足第三种情况 二、 > 如果搭建完剩余蛋糕层所需最大体积(max_v)比剩余可用体积($V-V_i$)还要小的话,则说用题目所固定的体积**用不完**,此时应该增大底层固定的半径$R_i和H_i$,直到它们满足第三种情况 > 三、 如果搭建完剩余蛋糕层所需的最小体积(min

weixin_46295292的博客 3419

poj 1190 dfs+剪枝(生日蛋糕)

题意:中文题。要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 Ri+1且Hi > Hi+1。 由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 令Q = Sπ 请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。 (除Q外,以上所有数据皆为正整数) 思路:主要第三个剪枝比较难想:设剩余总体积

dearmango 679

poj1190详细题解

题目大意:输入一个蛋糕的最大体积和最大层数 然后对于不同的半径和高计算出最小表面积 最小表面积有则打印最小表面积,没有则打印0 蛋糕的上面一层比下面一层的半径和高要大,因为都是整数 除了Q都是整数 简洁版见最后面 解析版 #include <iostream> #include <cstdio> using namespace std; //蛋糕的最大体积 蛋...

xiaozhou163的博客 580

Zabbix监控网络设备讲解

Zabbix监控网络设备讲解 本人在研究学习zabbix的时候,网上找过很多如何监控路由,交换,或者是防火墙的文章,但很多都比较散,这里我出一个大概的整合,方便大家参考和学习。本章就拿华三的交换机来做文章。 监控网络设备首先我们需要开启snmp协议,华三怎么开启snmp协议在我的博客里有写到,其次就是找到版本对应的OID,zabbix就是通过抓取设备的OID来做到监控网络设备的,当然zabbix也不仅仅只有通过snmp来监控设备,还有很多别的功能,这些功能我会在以后的博客里面一一更新 文章目录Zab

太阳了文哥的博客 3381

FreeCAD MCP实战:用AI自然语言驱动CAD建模与自动化

在计算机辅助设计(CAD)领域,参数化建模和自动化脚本是提升设计效率的核心技术。其原理在于通过程序化指令控制三维模型的创建与修改,从而将设计意图转化为精确的几何实体。这种技术价值在于显著降低重复性操作成本,实现快速原型迭代和设计探索。在应用场景上,它尤其适用于需要频繁调整尺寸、生成系列化零件或执行规则化建模任务的工程与产品设计。本文聚焦的FreeCAD MCP项目,正是这一理念的先进实践。它通过集成Model Context Protocol(MCP),构建了一个连接Claude AI与FreeCAD的智能

weixin_26913055的博客 723

poj 1190 生日蛋糕(剪枝+深搜)

题目地址 题目大意:Nπ体积m层的蛋糕,使得表面积最小 解题思路:将蛋糕从上到下编号1...m,从m层开始搜索,搜索过程中注意剪枝 三个剪枝条件: 1、已经搜索过的体积加上还未搜索过的最小体积不能比总体积n 大 2、已经搜索过的表面积加上还未搜索过的最小表面积不能比之前的最小总表面积best 大 3、n-sumv既所剩体积记作dv 还需要的表面积为s s=2*ri*hi+2*r(i-

booyoungxu的专栏 451

步进电机驱动算法——梯形加减速算法

目录步进电机梯形加减速梯形加减速算法原理分析算法实现 步进电机梯形加减速 电机的控制方式一般分为开环控制与闭环控制两种控制方式,其中开环控制原理框图如下: 这种种控制方式的特点是:控制简单、实现容易、价格较低,这种开环控制方式,负载位置对控制电路没有反馈。 对于步进电机,控制脉冲的输入并不依赖于转子的位置,而是按一固定的规律发出控制脉冲,如果励磁变化太快,电机不能移动到新的位置,那么实际负载位置与理想位置就会产生一个偏差,就有可能出现失步或者过冲现象,所以需要使用加减速算法。 梯形加减速算法,S加减速算法等

aaa376070331的博客 3万+

【POJ - 1190】生日蛋糕 (dfs+剪枝)

-->生日蛋糕 Descriptions: 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层...

Sky丨Star的博客 93

从零到英雄:WSL2与Ubuntu22.04的终极性能调优指南

本文详细介绍了如何在Windows系统中通过WSL2与Ubuntu22.04进行性能调优,涵盖内核定制、GPU加速、网络优化等关键技巧,帮助开发者打造媲美原生Linux的高性能开发环境,特别适合AI训练和大数据处理等资源密集型任务。

weixin_29218509的博客 523

合金理论自动化工具包(Alloy-Theoretic Automated Toolkit:ATAT)的安装

合金理论自动化工具包(ATAT)是一个通用名称,指的是合金理论工具的集合,它包含了不同的代码工具,具体如下: 1)根据第一性原理(映射和映射)构造集群扩展的代码。簇展开是一种非常紧凑和有效的表达式,给出取代合金的能量作为其构型的函数(即原子的类型位于晶格的哪个位置)。 2)为了计算合金的热力学性质,从聚类展开开始,对晶格模型进行蒙特卡洛模拟(emc2和memc2)的代码。 3)执行晶格动力学计算的代码(fitfc, fitsvsl, svsl) 4)使用简单的物理或半经验模型计算电子和磁自由能贡献

qq_33400046的博客 1万+

POJ1190生日蛋糕(DFS+神级剪枝)

http://poj.org/problem?id=1190 打表每层的最小面积和体积。 由于深度一定(m),所以使用深度优先搜索,自上而下的设定蛋糕序号,最顶层的为第1层,……,最底层的蛋糕为第m层,很明显满足题目条件的前i层的(从顶层(也就是编号为1的层)开始计数)最小面积mins[i]和体积minv[i]是在该层的半径以及高度都为i时取得,如果采用一般的神搜肯定会超时,所以这题...

190

基于matlab的车牌识别(含子程序)

基于matlab的车牌识别系统一、对车辆图像进行预处理1.载入车牌图像:function [d]=main(jpg) [filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'}); if(filename == 0), return, end global FILENAME %定义全局变量 FILENAME = [pathname f...

TuTu998的博客 4万+

POJ 1190(神搜+剪枝)

原来的地址:点击打开链接 poj 1190 生日蛋糕( 深搜+2类重要剪枝总结 ) 分类: ACM笔记 2011-08-02 22:14 356人阅读 评论(0) 收藏 举报 优化systemoo 题意 :  有一个多层蛋糕,已知蛋糕的体积和层数,求该蛋糕的最小表面积(最底层的下表面面积不计入总面积)              题目对

阿歇的专栏 1027

10天冲刺国自然基金!用这套实战AI提示词指令教程,助你中标率翻倍!亲测DeepSeek和ChatGPT不好用

虽然以上国自然提示词指令经过反复实测,但并不是万能无脑帮你搞定所有,大模型AI的特性是你专业领域能力越强,它的智商表现就会更加强大,通过以上提示词教程的使用,大大提升中标概率是肯定的。还有就是大模型的使用上,不是市面上大家都说好的就一定适用,目前来看,Gemini和Claude的两个模型是非常适合国自然本子的修改的。在使用大模型进行国自然本子撰写修改时,首先是角色的设定,然后是目标和背景的描述,好用的提示词指令都是要经过无数次的实测,比对输出结果后又反复调整,达到最佳的效果状态的提示词指令。

智能AI让学术科研更容易 1245

译码器Multisim电路仿真汇总——硬件工程师笔记

本文详细介绍了74LS139D和74LS138D两种TTL译码器的功能特点及应用。74LS139D是2线-4线译码器,具有低电平有效输出和使能控制功能,常用于地址译码和数据分配。74LS138D是3线-8线译码器,通过3位输入实现8路输出控制,广泛应用于微处理器系统。文中提供了两种芯片的引脚说明、真值表和典型应用电路,并附有硬件工程师笔试面试相关资源链接。这些基础知识对数字电路设计和硬件工程师面试准备具有重要参考价值。

XU157303764的博客 1260

poj 1190 dfs+神剪枝

生日蛋糕 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14120   Accepted: 4971 Description 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。  设从下往上数第i(1 R

cokomowang的专栏 440

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

POJ 1190 生日蛋糕 (dfs + 神剪枝)

POJ 1190 有三处剪枝,作为渣渣表示这题对我来说很有难度。题解也是看了好久才理解。 首先,minv[i] 表示从上往下数第i层以及第i层以上的最小总体积,mins[i]表示从上往下数第i层以及第i层以上的最小总面积。仔细想想可以知道每层的半径和高度都取这一层的层数即可得到最小值。 然后具体见代码。 参考博客:http://www.cnblogs.com/rainyda

Benjamin_Z的博客 1056

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

poj1190 生日蛋糕 dfs神剪枝

转载自:http://blog.youkuaiyun.com/gubojun123/article/details/7804516 由于深度一定(m),所以使用深度优先搜索,自上而下的设定蛋糕序号,最顶层的为第1层,……,最底层的蛋糕为第m层,很明显满足题目条件的前i层的(从顶层(也就是编号为1的层)开始计数)最小面积mins[i]和体积minv[i]是在该层的半径以及高度都为i时取得,如果采用一般

EventQueue的博客 723

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

poj1190 神剪枝啊 生日蛋糕 (dfs)

7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。  设从下往上数第i(1 Ri+1且Hi > Hi+1。  由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。  令Q = Sπ  请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。  (除Q外,以上所有数据皆为正

AK_HuangYC的博客 326

2016夏季练习——搜索

搜索

kiss forever 186

生日蛋糕POJ1190

生日蛋糕POJ1190 思路 题干在这:POJ1190 深度优先搜索,多剪剪枝 ac代码 #include<cstdio> #include<algorithm> #include<iostream> #include<cmath> #define inf 0x3f3f3f3f using namespace std; int N, M, S = i...

没有自旋的π介子 750

生日蛋糕POJ 1190

POJ 生日蛋糕(Tag 深搜 + 剪枝) DFS 剪枝优化 极限思想

lvxin1204的博客 3532

POJ1190:生日蛋糕(深搜+剪枝)

POJ1190:生日蛋糕 描述: 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。 由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。

WaveBridge的博客 1670

poj1190 生日蛋糕(深搜+剪枝)

题目链接:poj1190 生日蛋糕 解题思路: 深搜,枚举:每一层可能的高度和半径 确定搜索范围:底层蛋糕的最大可能半径和最大可能高度 搜索顺序:从底层往上搭蛋糕,在同一层尝试时,半径和高度都是从大到小试 剪枝: ①已建好的面积已经超过目前求得的最优表面积,或者预见到搭完后面积一定会超过目前最优表面积,则停止搭建(最优性剪枝) ②预见到再往上搭,高度已经无法安排,或者半径无...

dhe56357的博客 179
上一篇: poj2331 ida*
下一篇: poj3460 ida*
琴空
博客等级 码龄16年 48粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值