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

备战蓝桥杯---搜索(剪枝)

何为剪枝,就是减少搜索树的大小。

它有什么作用呢?

1.改变搜索顺序。

2.最优化剪枝。

3.可行性剪枝。

首先,单纯的广搜是无法实现的,因为它存在来回跳的情况来拖时间。

于是我们可以用DFS,那我们如何剪枝呢?

1.已经超时了还没到------舍弃

2.沿最快的路径(忽视障碍物)仍无法在规定时间到----舍弃

3.我们用x,y计算出两者的距离(不考虑障碍物),我们考虑反悔的时间,它是反悔后到的地方时间+偶数(有来必有回),就算有障碍物,要到目标肯定是两者的距离+返回时间,于是我们可以用这奇偶性与T判断,不同就删。

4.在此,我们可以确定,我们可以先BFS求最小+奇偶性判断即可。

让我们看另外一道:

下面是分析:

1.我们可以先sort,从小到大排,遇到正确的就退出。

2.参考组合的题,我们可以固定同一个木棒上的组成从大到小。

3.我们应该先放大的,并且从左开始(因为从小开始的话枚举了很多多会被最长的判断掉,比较严谨的可以看看上次写的数独问题)

4.结尾木棒如果错,则不是它的问题(我们要替代只能用跟小的组合,显然不划算)

5.开头木棒如果错,则是上一根木棒的问题(因为这木棒迟早要用,如果它错了,其他的木棒也不会对)

6.一个木棒不行,那么和他长度一样的也不可以。

因此,我们可以用上述规则剪枝。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[100],sum;
int b[100];
bool cmp(int a,int b){return a>b;
}//nxt剩下的棍子,len;changdu;chan:shenxia changdu
int q[1000][100];
int dfs(int nxt,int len,int chan,int pos){if(nxt==0&&chan==0) return 1;if(chan==0){chan=len;nxt--;pos=0;}for(int i=pos+1;i<=n;i++){if(b[i]!=0) continue;if(a[i]>chan) continue;if(q[chan][i]==-1) continue;b[i]=1;if(dfs(nxt,len,chan-a[i],i)==1) return 1;q[chan][i]==-1;b[i]=0;if(chan==len||chan==a[i]) return 0;while(a[i+1]==a[i]) i++;}return 0;
}
int main(){cin>>n;int y;for(int i=1;i<=n;i++){scanf("%d",&a[i]);sum+=a[i];}sort(a+1,a+n+1,cmp);for(int i=1;i<=3000;i++){if(sum%i!=0) continue;y=i;int u=sum/i;if(dfs(u-1,i,i,0)==1) break;}cout<<y;
}

再来一道:

下面是分析:

下面再对几个剪枝分析一下:

从m层dep层:

s=2*\sum hi*ri(dep-1<=i>=1)=2/r[dep](r[dep]*\sum hi*ri) r[dep]>=r[i] s>=2(n-v)/r[dep]\textbf{}

对于每一层的R   r^2*h<=n-v另h=1---->rmax=min((n-v)^(1/2),r-1)

同理:hmax=min((n-v)/r^2,h-1)

注意:枚举r,h时要从大到小

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,_s[23],_v[23],min1=1000000;
void dfs(int r,int h,int c,int v,int s){if(c==m){if(v==n) min1=min(min1,s);return ;}if(v+_v[c]>n) return;if(s+_s[c]>min1) return;if(2*(n-v)/r+s>min1) return;for(int i=min(r-1,(int)sqrt(n-v));i>=m-c;i--){if(c==0) s=i*i;for(int j=min(h-1,(n-v)/(i*i));j>=m-c;j--){dfs(i,j,c+1,v+i*i*j,s+2*i*j);}}
}
int main(){cin>>n>>m;for(int i=m;i>=0;i--) _s[i]=_s[i+1]+2*(m-i)*(m-i);for(int i=m;i>=0;i--) _v[i]=_v[i+1]+(m-i)*(m-i)*(m-i);dfs(n,n,0,0,0);if(min1==1000000) cout<<0;else cout<<min1;
}

相关文章:

备战蓝桥杯---搜索(剪枝)

何为剪枝&#xff0c;就是减少搜索树的大小。 它有什么作用呢&#xff1f; 1.改变搜索顺序。 2.最优化剪枝。 3.可行性剪枝。 首先&#xff0c;单纯的广搜是无法实现的&#xff0c;因为它存在来回跳的情况来拖时间。 于是我们可以用DFS&#xff0c;那我们如何剪枝呢&#…...

ResizeObserver的使用

这篇说下ResizeObserver API。ResizeObserver接口监视 Element 内容盒或边框盒或者 SVGElement 边界尺寸的变化。 ResizeObserver避免了通过回调函数调整大小时&#xff0c;通常创建的无限回调循环和循环依赖项。它只能通过在后续的帧中处理 DOM 中更深层次的元素来做到这一点…...

CleanMyMac X 4.14.7帮您安全清理Mac系统垃圾

CleanMyMac X 4.14.7是一款强大的 Mac 清理、加速工具和健康卫士,可以让您的 Mac 再次恢复巅峰性能。 移除大型和旧文件、卸载应用,并删除浪费磁盘空间的无用数据。 5倍 更多可用磁盘空间 CleanMyMac X 4.14.7帮您安全清理Mac系统垃圾 CleanMyMac X 4.14.7一键深度扫描mac系统…...

C语言实现memcpy、memmove库函数

目录 引言一、库函数介绍二、库函数详解三、源码实现1.memcpy源码实现2.memmove源码实现 四、测试1.memcpy函数2.memmove函数 五、源码1.memcpy源码2.memmove源码 六、参考文献 引言 关于memcpy和memmove这两个函数&#xff0c;不论是算法竞赛还是找工作面试笔试&#xff0c;对…...

MySQL数据库④_表的约束(主键_自增长_唯一键_外键等)

目录 1. 约束概念和常见的约束 2. 空属性null/not null 2. 默认值default 3. 列描述comment 4. 自动填充zerofill 5. 主键primary key ​​​​​​​5.1 主键 5.2 复合主键​​​​​​​​​​​​​​ 6. 自增长auto_increment 7. 唯一键unique key 8. 外键forei…...

SpringBoot过滤器获取请求的参数

一、背景 在项目开发过程中&#xff0c;需要对于某些接口统一处理。 这时候就需要获取请求的报文&#xff0c;再对获取的报文进行统一处理。 二、了解过滤器 首先了解一下过滤器拦截器的区别&#xff1a; JAVA中的拦截器、过滤器&#xff1a;https://blog.csdn.net/qq_38254…...

幻兽帕鲁mac可以玩吗?

《幻兽帕鲁》&#xff08;英文&#xff1a;Palworld&#xff09;是一款近期在 Steam 爆红的动作冒险生存游戏&#xff0c;游戏设置在一个居住着「帕鲁」的开放世界中&#xff0c;玩家可以战斗并捕捉帕鲁&#xff0c;也能用它们来建造基地、骑乘和战斗。 不过目前《幻兽帕鲁》仅…...

webstorm、vscode、HBuilder配置eslint检查

你们好&#xff0c;我是金金金。 场景 每个人写的代码都有自己所属的风格&#xff0c;所以项目中统一代码风格特别重要&#xff0c;新开的项目中如何快速配置ESLint呢&#xff1f; 安装 npm install --save-dev eslint ----安装eslintnpm install --save-dev eslint-plugin-vu…...

大数据知识图谱之深度学习——基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统

文章目录 大数据知识图谱之深度学习——基于BERTLSTMCRF深度学习识别模型医疗知识图谱问答可视化系统一、项目概述二、系统实现基本流程三、项目工具所用的版本号四、所需要软件的安装和使用五、开发技术简介Django技术介绍Neo4j数据库Bootstrap4框架Echarts简介Navicat Premiu…...

年底个人总结

年底个人总结 前言&#xff1a;又到了年底&#xff0c;在游戏行业工作了接近10年&#xff0c;想想也应该把自己做过的东西做一个总结。 从14年在北京毕业&#xff0c;懵懂的我在机缘巧合下遇到了陈g&#xff0c;我行业的领路人&#xff0c;在他的带领下我进入到了游戏行业。 当…...

jsp教材管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 教材管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…...

SpringBoot:配置相关知识点

SpringBoot&#xff1a;多环境配置 配置知识点demo&#xff1a;点击查看LearnSpringBoot02 点击查看更多的SpringBoot教程 一、SpringBootApplication SpringBootApplication 来标注一个主程序类&#xff0c;说明这是一个Spring Boot应用&#xff0c;运行这个类的main方法来…...

在线JSON转SQL工具

在线JSON转SQL - BTool在线工具软件&#xff0c;为开发者提供方便。在线JSON转SQL工具可以将JSON文件中的数据或者JSON对象转换为SQL插入语句&#xff0c;方便用户将数据导入到数据库中。用户可以通过简单的界面上传JSON文件&#xff0c;或者文本框输入&#xff0c;点击JSON转S…...

网络安全大赛

网络安全大赛 网络安全大赛的类型有很多&#xff0c;比赛类型也参差不齐&#xff0c;这里以国内的CTF网络安全大赛里面著名的的XCTF和强国杯来介绍&#xff0c;国外的话用DenCon CTF和Pwn2Own来举例 CTF CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相…...

phpMyAdmin 未授权Getshell

前言 做渗透测试的时候偶然发现&#xff0c;phpmyadmin少见的打法&#xff0c;以下就用靶场进行演示了。 0x01漏洞发现 环境搭建使用metasploitable2,可在网上搜索下载&#xff0c;搭建很简单这里不多说了。 发现phpmyadmin&#xff0c;如果这个时候无法登陆&#xff0c;且也…...

PHP实现DESede/ECB/PKCS5Padding加密算法兼容Java SHA1PRNG

这里写自定义目录标题 背景JAVA代码解决思路PHP解密 背景 公司PHP开发对接一个Java项目接口&#xff0c;接口返回数据有用DESede/ECB/PKCS5Padding加密&#xff0c;并且key也使用了SHA1PRNG加密了&#xff0c;网上找了各种办法都不能解密&#xff0c;耗了一两天的时间&#xf…...

亚马逊认证考试系列 - 知识点 - 安全组介绍

第一部分&#xff1a;AWS简介 Amazon Web Services&#xff08;AWS&#xff09;是全球领先的云计算服务提供商&#xff0c;为个人、企业和政府机构提供广泛的云服务解决方案。AWS的服务包括计算、存储、数据库、分析、机器学习、人工智能、物联网、安全和企业应用等领域。AW…...

【Golang】exec.command命令日志输出示例

背景 为了输出执行命令的日志&#xff0c;主要是执行时间很长&#xff0c;而且分批输出日志的命令。 代码 func Execute(){command : exec.Command("执行命令")// 隐藏黑色窗口command.SysProcAttr &syscall.SysProcAttr{CreationFlags: 0x08000000}// 输出日…...

Dijkstra算法(求最短路)

简介&#xff1a; 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的&#xff0c;因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法&#xff0c;解决的是有权图中最短路径问题。 特点&#xff1a; 迪杰斯特拉算法采用的是一种贪心策略&a…...

ipcf 核间通讯

S32G2汽车网关开发&#xff08;四&#xff09;&#xff1a;IPCF通信_s32g 车载网关 精典-CSDN博客 Linux ARM平台开发系列讲解&#xff08;IPCF异核通信&#xff09; 2.11.3 IPCF异核通信驱动编译及其测试-CSDN博客...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...