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

news2024/11/25 10:47:10

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

它有什么作用呢?

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;
}

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

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

相关文章

Vulnhub靶机:hacksudoAliens

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;hacksudoAliens&#xff08;10.0.2.46&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://download.vulnhub.com…

PyTorch使用

前言 系统环境&#xff1a;win10 使用Anaconda&#xff0c;Anaconda的安装自行百度。 conda 23.7.4 目录 前言 创建虚拟环境 1、查看当前有哪些虚拟环境 2、创建虚拟环境pytorch 3、激活及关闭pytorch虚拟环境 4、删除pytorch虚拟环境 使用yolov5测试 1、切换至yolo…

UWA Pipeline 2.6.0 版本更新

UWA Pipeline是一款面向游戏开发团队的本地协作平台&#xff0c;旨在为游戏开发团队搭建专属的DevOps研发交付流水线&#xff0c;提供可视化的CICD操作界面、高可用的自动化测试以及UWA性能保障服务的无缝贴合等实用功能。 本周&#xff0c;我们迎来了全新的UWA Pipeline 2.6.…

MES系统是什么?MES软件有什么用?

在制造业领域&#xff0c;伴随着科技的不断进步和产业升级&#xff0c;企业越来越重视数字化和信息化在生产管理中的应用。引入先进的管理系统成为企业提高生产效率、降低成本、增强产品质量的关键途径。在工业4.0的大背景下&#xff0c;MES制造执行系统作为一种位于ERP企业资源…

docker手动迁移镜像

1&#xff0c;将镜像保存在本地 docker save 镜像名称:版本号 > 镜像名称.tar 2&#xff0c;下载镜像 通过 ftp 工具或者命令&#xff0c;下载到本地 3&#xff0c;上传镜像到目标 docker 所在服务器 4&#xff0c;导入镜像 docker load < 镜像名称.tar

【ACL 2023】Enhancing Document-level EAE with Contextual Clues and Role Relevance

【ACL 2023】Enhancing Document-level Event Argument Extraction with Contextual Clues and Role Relevance 论文&#xff1a;https://aclanthology.org/2023.findings-acl.817/ 代码&#xff1a;https://github.com/LWL-cpu/SCPRG-master Abstract 与句子级推理相比&…

程序员转行餐饮店之路:从开始到失败

之前一直有做副业的想法&#xff0c;比如最开始的水果摊&#xff0c;地铁口的烟花摆摊&#xff0c;都是从开始到失败。执着于摆摊的原因有两个&#xff1a;一是工资款如同上证指数一样&#xff0c;越来越低&#xff1b;二是为了先熟悉一下“创业”的过程。 契机终于来了&#x…

互联网加竞赛 基于深度学习的水果识别 设计 开题 技术

1 前言 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/pos…

第三篇:SQL数据模型、通用语法和语法分类

一&#xff0c;SQL数据模型 &#xff08;一&#xff09;关系型数据库&#xff08;RDBMS&#xff09; 1.概念 &#xff08;百度百科&#xff09;指采用了关系模型来组织数据的数据库&#xff0c;其以行和列的形式存储数据&#xff0c;以便于用户理解&#xff0c;关系型数据库这…

19113133262(微信同号)2024年光电信息与机器视觉国际学术会议(ICOIMV 2024)

【征稿进行时|见刊、检索快速稳定】2024年光电信息与机器视觉国际学术会议(ICOIMV 2024) 2024 International Conference Optoelectronic Information and Machine Vision(ICOIMV 2024) 一、【会议简介】 本次会议的主题为“光电信息与机器视觉的未来发展”。围绕这一主题&…

信钰证券:部分金融股表现坚挺,四大行集体上扬,农业银行再创新高

部分金融股5日盘中表现坚挺&#xff0c;截至发稿&#xff0c;中信银行、光大证券涨超3%&#xff0c;工商银行涨逾2%&#xff0c;中国银行、农业银行、交通银行、建设银行涨超1%。值得注意的是&#xff0c;农业银行盘再度刷新历史新高。 音讯面上&#xff0c;2月5日&#xff0c…

Fink CDC数据同步(六)数据入湖Hudi

数据入湖Hudi Apache Hudi(简称&#xff1a;Hudi)使得您能在hadoop兼容的存储之上存储大量数据&#xff0c;同时它还提供两种原语&#xff0c;使得除了经典的批处理之外&#xff0c;还可以在数据湖上进行流处理。这两种原语分别是&#xff1a; Update/Delete记录&#xff1a;H…

什么?AI居然能拜年!!!

一、AI拜年的意义和背景 AI拜年作为新年祝福的一种形式&#xff0c;是利用人工智能技术为传统的拜年文化注入现代元素。在当今移动互联网时代&#xff0c;AI拜年的出现具有重要意义&#xff0c;它既延续了传统的节日习俗&#xff0c;又利用了先进的科技手段&#xff0c;为人们…

洛谷问题美国血统 American Heritage、新二叉树题解(关于二叉树的遍历问题)

目录 一.美国血统 American Heritage 二.新二叉树 一.美国血统 American Heritage P1827 [USACO3.4] 美国血统 American Heritage - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他…

MVC、MVP、MVVM三种模式的介绍及区别(代码例子说明)

目录 一、MVC&#xff08;Model-View-Controller&#xff09; 二、MVP&#xff08;Model-View-Presenter&#xff09; 三、MVVM&#xff08;Model-View-ViewModel&#xff09; 四、几种架构模式的比较 五、例子演示 前言 ”软件系统的架构将系统描述为计算机组件及组件之间…

基于A-Star搜索算法的迷宫小游戏的设计

这篇文章是作者人工智能导论课的大作业&#xff0c;发出来供大家学习参考&#xff08;有完整代码&#xff09;。想要论文WORD文件的可以在本文资源处下载&#xff08;可能还在审核&#xff09;。 摘要&#xff1a; 本文章聚焦于基于A-Star搜索算法的迷宫小游戏设计&#xff0c;…

蓝桥杯Web应用开发-CSS 基础语法3(文本属性)

CSS 基础语法-文本属性 专栏持续更新中 文本属性 文本属性用于定义文本的样式&#xff0c;通过文本属性&#xff0c;可以改变文本的颜色、字间距、对齐方式、文本修饰和文本缩进等。常用文本属性如下表所示&#xff1a; 属 性可取值描述line-heightnormal、number、length、…

vulhub中Apache APISIX Dashboard API权限绕过导致RCE(CVE-2021-45232)

Apache APISIX是一个动态、实时、高性能API网关&#xff0c;而Apache APISIX Dashboard是一个配套的前端面板。 Apache APISIX Dashboard 2.10.1版本前存在两个API/apisix/admin/migrate/export和/apisix/admin/migrate/import&#xff0c;他们没有经过droplet框架的权限验证&…

【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“

使用idea运行项目&#xff0c;显示错误信息如下&#xff1a; 原因是&#xff1a;idea配置的maven加载不到autoconfigure。 解决方案一&#xff1a; 第6步绕过证书语句如下&#xff1a; -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue 打开终端&am…

C++一维数组

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 铁汁们大家好呀&#xff0c;我是PingdiGuo_guo&#xff0c;今天我们来学习一下数组&#xff08;一维&#xff09;。 文章目录 1.数组的概念与思想 2.为什么要使用数组 3.数组的特性 4.数组的操作 1.定义…