当前位置: 首页 > 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博客...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...