蓝桥杯倒计时 36天-DFS练习

news2024/11/18 21:39:37

文章目录

  • 飞机降落
  • 仙境诅咒
  • 小怂爱水洼
  • 串变换

飞机降落

在这里插入图片描述
在这里插入图片描述
思路:贪心+暴搜。

#include<bits/stdc++.h>

using namespace std;
const int N = 10;
int t,n;
//这题 N 比较小,可以用暴力搜搜复杂度是 T×N*N!
struct plane{
    int t,d,l;
}p[N];
bool vis[N];//用来记录每个飞机是否访问
bool dfs(int dep,int last){
    if(dep==n){//当枚举完所有飞机到叶子节点则说明有满足条件的情况。
        return true;//只要一个 true 所有都 true
    }
    
    for(int i=0;i<n;i++){//枚举每个飞机
        int t = p[i].t,d = p[i].d,l = p[i].l;
        if(!vis[i]&&t+d>=last){//没访问过并且上一架飞机将落后可以降落
            vis[i]=true;//标记访问
            if(dfs(dep+1,max(t,last)+l))return true;//需要判断极限条件是否成立
            vis[i]=false;//回溯还原
        }
    }
    return false;//只要一个 false 所有都 false
}

int main( ){
    cin>>t;
    while(t--){
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>p[i].t>>p[i].d>>p[i].l;
        }
        memset(vis, false, sizeof vis);//还原标志位
        if(dfs(0,0))puts("YES");
        else puts("NO");
    }
    return 0;
}

仙境诅咒

在这里插入图片描述
思路:图的 DFS

#include<bits/stdc++.h>
using namespace std;
int n,d;
const int N = 1e3+10;

struct god{
    int x,y;
}gods[N];//输入每个神仙的坐标

bool vis[N];//判断神仙是否中毒

double dis(int i,int j){//求两个神仙间的欧式距离
    int x1 = gods[i].x,x2 = gods[j].x;
    int y1 = gods[i].y,y2 = gods[j].y;
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
//搜索以第 id 个中毒的神仙能感染周围哪些神仙
void dfs(int id){
    vis[id]=true;//标记第 id 个神仙中毒
    for(int i=0;i<n;i++){
        if(!vis[i]&&dis(id,i)<=d)dfs(i);//如果神仙没有搜索过,并且他在其他神仙的毒圈内,就需要以他为圆心进行搜索。
    }
}

int main( ){
    cin>>n;
    for(int i=0;i<n;i++)cin>>gods[i].x>>gods[i].y;
    cin>>d;
    dfs(0);
    for(int i=0;i<n;i++)cout<<(vis[i]?"1":"0")<<'\n';
    return 0;
}

小怂爱水洼

在这里插入图片描述
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N = 1e2+5;
int n,m;
int vis[N][N],a[N][N];
typedef long long LL;
int dy[4]={0,1,0,-1};
int dx[4]={1,0,-1,0};
//在同一片水洼内搜索
void dfs(int x,int y,LL &sum){
    //保存新水洼的水量,并且设置已经访问过
    sum += 1ll*a[x][y];
    vis[x][y] = true;
    //向水洼四周搜索
    for(int i=0;i<=3;i++){
        int nx = dx[i]+x;
        int ny = dy[i]+y;
        //不能越界,不能访问过,并且要有水量,否则跳过该坐标
        if(nx<=0||nx>=n+1||ny<=0||ny>=m+1||!a[nx][ny]||vis[nx][ny])continue;
        dfs(nx,ny,sum);
    }
}
int main( ){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];//输入矩阵
        }
    }
    long long result =0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            LL sum = 0;
            dfs(i,j,sum);//对每个大水洼进行求和,ij 是水洼坐标,sum 存每个大水洼的水量和
            result = max(result,sum);//result 是总的最大的水洼
        }
    }
    cout<<result;
    return 0;
}

串变换

在这里插入图片描述

在这里插入图片描述
思路:数据范围k 为 7 用暴搜做。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

const int N = 25;//数组的最大条件
int n,k;//串的长度为 n,操作次数 k
string s,t;//源串和目的串
int op[N],x[N],y[N];//操作数和操作码
vector<int> path;//用来存操作次序(全排列)
bool st[N];//用来记录是否访问过
bool res;//用来记录最后答案

void update(){
    //得到全排列的值进行操作看是否能得到目的串
    string str = s;
    for(int i=0;i<path.size();i++){
        int j = path[i];
        int a = op[j],b = x[j], c = y[j];
        if(a==1){
            str[b] = (str[b] - '0' + c) % 10 + '0';
        }else swap(str[b],str[c]);
    }
    res |= str==t;
}

void dfs(int u)
{
    if (u == k + 1)
    {
        update();
        return;
    }
    //全排列代码
    for (int i = 1; i <= k; ++ i )
        if (!st[i])
        {
            st[i] = true;
            path.push_back(i);
            dfs(u + 1);
            path.pop_back();
            st[i] = false;
        }
    //防止搜索一些值,叶节点没搜索到
    dfs(k + 1);
}
int main()
{
    cin >> n >> s >> t >> k;
    for (int i = 1; i <= k; ++ i )
        cin >> op[i] >> x[i] >> y[i];
    
    dfs(1);
    
    cout << (res? "Yes": "No") << endl;
    
    return 0;
}

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

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

相关文章

Elasticsearch:机器学习与人工智能 - 理解差异

作者&#xff1a;来自 Elastic Aditya Tripathi, Jessica Taylor 长期以来&#xff0c;人工智能几乎完全是科幻小说作家的玩物&#xff0c;人类将技术推得太远&#xff0c;以至于它变得活跃起来 —— 正如好莱坞让我们相信的那样 —— 开始造成严重破坏。 令人愉快的东西&#…

保护图纸不能打印,加密图纸如何加密只能看,不能打印复制

图纸是表达设计思想、传递产品信息、交流产品构思的最重要的工具&#xff0c;是企业中最重要的技术资料。 图纸作为企业重要的技术资料&#xff0c;包含了产品的核心设计、制造工艺、材料选择等关键信息。 那么&#xff0c;如何才能保护图纸呢&#xff1f; 首先&#xff0c;我…

Covalent(CQT)降低数据可用性成本,加快 Layer2 在 Web3 领域的扩张

Covalent Network&#xff08;CQT&#xff09;通过其统一 API&#xff0c;正在为 EVM Layer2 生态系统提供支持&#xff0c;减少了开发者需要导航多个数据供应商的需求&#xff0c;通过解决多链环境中的碎片化挑战&#xff0c;极大地提高了他们的效率。 通过其统一 API 支持 2…

静态源代码安全扫描工具测评结果汇总

测评背景 随着数字技术的进步&#xff0c;网络安全行业日益发展&#xff0c;企业对于DevSecOps的应用和落地的需求日益增加&#xff0c;静态源代码安全扫描工具已成为其中的关键产品或工具。同时&#xff0c;在代码安全审计或检测过程中&#xff0c;也需要选择一款合适的、好用…

动态代理详解(原理+代码+代码解析)

动态代理 1.什么是动态代理&#xff1f; 动态代理是一种在运行的时候动态的生成代理对象的技术。它在不改变原始类的情况下&#xff0c;对原始类的方法进行拦截或者增强。 2.动态代理可以实现的功能&#xff1f; 使用动态代理可以实现如下常用功能&#xff1a; 1.AOP&#x…

Python实现线性查找算法

Python实现线性查找算法 以下是使用 Python 实现线性查找算法的示例代码&#xff1a; def linear_search(arr, target):"""线性查找算法:param arr: 要搜索的数组:param target: 目标值:return: 如果找到目标值&#xff0c;返回其索引&#xff1b;否则返回 -1…

Observer 模式

文章目录 &#x1f4a1;问题引入&#x1f4a1;概念&#x1f4a1;例子&#x1f4a1;总结 &#x1f4a1;问题引入 假设有一个在线商店系统&#xff0c;用户可以订阅商品的库存通知。当某个商品的库存数量发生变化时&#xff0c;系统会自动发送通知给所有订阅了该商品的用户。设计…

Anaconda下载安装及配置pytorch环境

先解释一下Python、Anaconda、Pytorch是啥 Python是一种广泛使用的编程语言&#xff0c;在许多领域都有应用。它具有简洁的语法&#xff0c;易于学习&#xff0c;并且有大量的第三方库可以使用。 Anaconda是一个Python的包和环境管理软件&#xff0c;提供了许多用于数据科学&a…

融资利率选哪家好?

第一&#xff1a;怎么理解融资融券&#xff1f; 融资融券交易&#xff0c;又称“证券信用交易”&#xff0c;分为融资交易和融券交易。是指投资者通过向具有融资融券业务资格的证券公司提供担保物&#xff0c;借入资金买入证券&#xff08;融资交易&#xff09;或借入证券并卖…

前端基础篇-深入了解用 HTML 与 CSS 实现标题排版

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 HTML 与 CSS 概述 2.0 HTML - 标题排版 2.1 图片标签 2.2 标题标签 2.3 水平标签 2.4 实现标题排版 3.0 HTML - 标题样式(style 样式) 3.1 CSS 的引入方式 3.2…

docker学习入门篇

1、docker简介 docker官网&#xff1a; www.docker.com dockerhub官网&#xff1a; hub.docker.com docker文档官网&#xff1a;docs.docker.com Docker是基于Go语言实现的云开源项目。 Docker的主要目标是&#xff1a;Build, Ship and Run Any App, Anywhere(构建&…

ScaleKD: Distilling Scale-Aware Knowledge in Small Object Detector

ScaleKD: Distilling Scale-Aware Knowledge in Small Object Detector在小目标检测器中提取尺度感知知识 摘要 尽管通用目标检测取得了显著的成功&#xff0c;但小目标检测&#xff08;SOD&#xff09;的性能和效率仍然令人不满意。与现有的努力平衡推理速度和SOD性能之间的…

华为数通方向HCIP-DataCom H12-821题库(多选题:121-140)

第121题 以下哪些事件会导致IS-IS产生一个新的LSP? A、引入的IP路由发送变化 B、周期性更新 C、接口开销发生了变化 D、邻接Up或Down 【参考答案】ABCD 【答案解析】 第122题 以下哪些协议既支持网络配置管理又支持网络监控管理? A、Telemetry B、NETCONF C、SNMP D、LLDP …

机器视觉学习(一)—— 认识OpenCV、安装OpenCV

目录 一、认识OpenCV 二、通过pip工具安装OpenCV 三、PyCharm安装OpenCV 一、认识OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff0c;开源计算机视觉库&#xff09;是一个跨平台的计算机视觉库&#xff0c;最初由威尔斯理工学院的Gary Bradski于199…

Node.Js编码注意事项

Node.js 中不能使用 BOM 和 DOM 的 API&#xff0c;可以使用 console 和定时器 APINode.js 中的顶级对象为 global&#xff0c;也可以用 globalThis 访问顶级对象 浏览器端js的组成 Node.js中的JavaScript组成 相比较之下发现只有console与定时器是两个API所共有的&#xff…

QQ邮箱API的安全性和隐私保护措施有哪些?

QQ邮箱API接口有哪些功能&#xff1f;如何申请电子邮箱API接口&#xff1f; QQ邮箱作为国内广受欢迎的电子邮箱服务&#xff0c;其API接口的安全性和隐私保护措施更是备受关注。那么&#xff0c;QQ邮箱API的安全性和隐私保护措施究竟有哪些呢&#xff1f;接下来&#xff0c;就…

ABAP接口部分-Web Service提供者与消费者

ABAP接口部分-Web Service提供者与消费者 文章目录 ABAP接口部分-Web Service提供者与消费者Web Service提供者Web Service测试配置[SOA网址](https://mysap.goodsap.cn:44300/sap/bc/webdynpro/sap/appl_soap_management )测试 Web Service消费者创建Services Consumer消费者创…

C# 中 Replace 字符串操作方法

在 C# 中&#xff0c;Replace 是一个字符串操作方法&#xff0c;用于替换字符串中的指定字符或子字符串。它接受两个参数&#xff1a;要查找和替换的字符串。Replace 方法在源字符串中查找所有匹配的字符或子字符串&#xff0c;并用指定的替换字符串进行替换。 下面是 Replace…

CV论文--2024.3.7

1、FAR: Flexible, Accurate and Robust 6DoF Relative Camera Pose Estimation 中文标题&#xff1a;FAR&#xff1a;灵活、准确和稳健的6DoF相机相对姿态估计 简介&#xff1a;在计算机视觉领域&#xff0c;估计图像之间的相对相机姿态一直是一个关键问题。通常&#xff0c;…

多核多cluster多系统之间缓存一致性概述

目录 1.思考和质疑2.怎样去维护多核多系统缓存的一致性2.1多核缓存一致性2.2多Master之间的缓存一致性2.3dynamIQ架构同一个core中的L1和L2 cache 3.MESI协议的介绍4.ACE维护的缓存一致性5.软件定义的缓存和替换策略6.动图示例 本文转自 周贺贺&#xff0c;baron&#xff0c;代…