备战蓝桥杯---搜索(应用基础1)

news2024/9/22 13:28:48

话不多说,直接看题:

显然,我们直接用深搜,我们可以先把空位用结构体存,然后打表存小方块,再用数组存行列。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int a[12][12];
int biao[20][20]={{0,0,0,0,0,0,0,0,0,0},
                  {0,1,1,1,2,2,2,3,3,3},
                  {0,1,1,1,2,2,2,3,3,3},
                  {0,1,1,1,2,2,2,3,3,3},
                  {0,4,4,4,5,5,5,6,6,6},
                  {0,4,4,4,5,5,5,6,6,6},
                  {0,4,4,4,5,5,5,6,6,6},
                  {0,7,7,7,8,8,8,9,9,9},
                  {0,7,7,7,8,8,8,9,9,9},
                  {0,7,7,7,8,8,8,9,9,9}
                 };
int ck[20][20];
int lie[12][12],hang[12][12];
struct node{
    int x,y;
}b[200];
int cnt;
void print(void){
    for(int i=1;i<=9;i++){
        for(int j=1;j<=9;j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
}
void dfs(int deep){
    if(deep>cnt){
        print();
        return ;
    }
    else{
        for(int i=1;i<=9;i++){
            if(lie[b[deep].y][i]==0&&hang[b[deep].x][i]==0&&ck[biao[b[deep].x][b[deep].y]][i]==0){
                lie[b[deep].y][i]=1;
                a[b[deep].x][b[deep].y]=i;
                hang[b[deep].x][i]=1;
                ck[biao[b[deep].x][b[deep].y]][i]=1;
                dfs(deep+1);
                lie[b[deep].y][i]=0;
                hang[b[deep].x][i]=0;
                ck[biao[b[deep].x][b[deep].y]][i]=0;
            }
        }
    }
}
int main(){
    for(int i=1;i<=9;i++){
        for(int j=1;j<=9;j++){
            cin>>a[i][j];
            if(a[i][j]!=0){
                lie[j][a[i][j]]=1;
                hang[i][a[i][j]]=1;
                ck[biao[i][j]][a[i][j]]=1;
            }
            else{
                b[++cnt].x=i;
                b[cnt].y=j;
            }
        }
    }
    dfs(1);
}

值得注意的,我们其实可以三个判断容器排个序,选出约束条件最多的先枚举,这样虽然复杂度还是一样,但是按照这个顺序就可以更快的确定约束条件多的从而减少不必要的递归次数。

我们可以举个例子:

接题:

下面为分析:

我们写出4与7的组合然后分段计算即可,下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
long long l,r;
long long a[7000];
int cnt;
bool cmp(long long a,long long b){
    return a<b;
}
void dfs(int deep){
    if(deep>500000000000LL) return ;
    a[cnt++]=deep;
    dfs(10*deep+4);
    dfs(10*deep+7);
}
signed main(){
    cin>>l>>r;
    dfs(0);
    sort(a+1,a+cnt,cmp);
    int l1=lower_bound(a+1,a+cnt,l)-a;
    int r1=lower_bound(a+1,a+cnt,r)-a;
    long long sum=0;
    if(l1!=r1){
    sum+=(a[l1]-l+1)*a[l1];
    for(int i=l1+1;i<=r1-1;i++){
        sum+=(a[i]-a[i-1])*a[i];
    }
   sum+=(r-a[r1-1])*a[r1];}
    else{
        sum=a[r1]*(r-l+1);
    }
    cout<<sum;
}

看道有趣的题:

可以用并查集,最后判断与下表面连的点与上表面连的点是否在同一个集合,这里采用BFS,先把与上表面相连的点放队里,在判断与他们相连的点,下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int t,n,h,r,b[1010];
struct node{
    int x,y,z;
}a[1010];
int check(node a,node b){
    if(pow(a.x-b.x,2)+pow(a.y-b.y,2)+pow(a.z-b.z,2)<=4*pow(r,2)){
        return 1;
    }
    return 0;
}
int main(){
    cin>>t;
    while(t--){
        memset(b,0,sizeof(b));
        queue<node> q;
        int f=0;
        scanf("%d%d%d",&n,&h,&r);
        for(int i=1;i<=n;i++){
            scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
            if(r+a[i].z>=h){
                q.push(a[i]);
                b[i]=1;}
        }
        while(!q.empty()){
            node s=q.front();
            q.pop();
            if(s.z-r<=0){
                f=1;
                break;
            }
            for(int i=1;i<=n;i++){
                if(b[i]==0&&check(a[i],s)==1){
                  q.push(a[i]);
                  b[i]=1;
                }
            }
        }
        if(f) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
}

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

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

相关文章

【Springcloud篇】学习笔记六(十一、十二章):Config分布式配置中心、Bus消息总线

第十一章_Config分布式配置中心 1.Config分布式配置中心介绍 1.1分布式系统面临的配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务&#xff0c;每个服务的粒度相对较小&#xff0c;因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行&…

图论练习2

内容&#xff1a;路径计数DP&#xff0c;差分约束 最短路计数 题目大意 给一个个点条边的无向无权图&#xff0c;问从出发到其他每个点的最短路有多少条有自环和重边&#xff0c;对答案 解题思路 设边权为1&#xff0c;跑最短路 表示的路径数自环和重边不影…

Blender教程(基础)-面的切割-10

快捷键K切割&#xff0c;菜单选项切割. 一、随意切割 物体在编辑模式下&#xff0c;按键盘K建切割物体。 二、中点切割 先按K键&#xff0c;再按shift键&#xff0c;会自动吸附到每条边的中点进行切割。 三、取消吸附 切割时会自动吸附到顶点或边 关闭快速吸附 按K键再按…

山东淄博刑侦大队利用无人机抓获盗窃团伙

山东淄博刑侦大队利用无人机抓获盗窃团伙 近期&#xff0c;山东淄博临淄区发生多起盗窃案件。通过视频追踪和调查访问&#xff0c;推断临淄区某村可能为嫌疑人藏匿地点。刑侦大队无人机应急小组迅速到达现场&#xff0c;经无人机高空侦查&#xff0c;发现并锁定了嫌疑人的藏匿…

PHP入门指南:API

PHP入门指南&#xff1a;API 1. 简介2. API的基础概念2.1 什么是API&#xff1f;2.2 API的类型2.3 API的作用2.4 RESTful API2.5 API的基本构成元素 3. PHP与API的交互基础3.1 发送HTTP请求3.2 处理HTTP响应3.3 异常处理3.4 确保安全性 4. 如何在PHP中创建一个简单的API4.1 设计…

【数据分享】1929-2023年全球站点的逐月降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2023年全球气象站点的逐月平均气温数据、逐月最高气温数据…

笔记---容斥原理

AcWing,890.能被整除的数 给定一个整数 n n n 和 m m m 个不同的质数 p 1 , p 2 , … , p m p_{1},p_{2},…,p_{m} p1​,p2​,…,pm​。 请你求出 1 ∼ n 1∼n 1∼n 中能被 p 1 , p 2 , … , p m p_{1},p_{2},…,p_{m} p1​,p2​,…,pm​ 中的至少一个数整除的整数有多少…

起心动念 | 生成式 AI 开发实践系列的开端

生成式 AI 和大模型的技术变革力量&#xff0c;正在逐渐影响着我们当下这个时代&#xff0c;全球各行各业都呈现百舸争流、万象更新的趋势。在 2023 年&#xff0c;我们通过各种面向开发者的活动&#xff0c;收集到了大量开发者关于基于生成式 AI 的开发内容需求和建议反馈。开…

免费CRM管理系统哪家好?如何选择?

免费的CRM系统有很多&#xff0c;以下是一些比较常见的&#xff1a;一、Zoho CRM&#xff1b;二、HubSpot CRM&#xff1b;三、Bitrix24&#xff1b;四、SuiteCRM&#xff1b;五、Agile CRM&#xff1b;六、Capsule CRM&#xff1b;七、Insightly。免费的CRM系统虽然功能相对较…

爬虫-网络空间微博信息管理系统的设计与实现-计算机毕业设计源码85633

摘 要 本论文主要论述了如何使用django框架开发一个网络空间微博管理信息系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述该系统的当前背景以及系统开发的目的&#xff0c;后续章节…

(每日持续更新)jdk api之ObjectInput基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

11. Threejs案例-绘制网格状圆环扭结

11. Threejs案例-绘制网格状圆环扭结 实现效果 知识点 TorusKnotGeometry (圆环缓冲扭结几何体) 创建一个圆环扭结&#xff0c;其特殊形状由一对互质的整数&#xff0c;p 和 q 所定义。如果 p 和 q 不互质&#xff0c;创建出来的几何体将是一个环面链接。 构造器 TorusKno…

解锁MyBatis Plus的强大功能:学习高级操作与DML技巧!

MyBatisPlus 1&#xff0c;DML编程控制1.1 id生成策略控制知识点1&#xff1a;TableId1.1.1 环境构建1.1.2 代码演示AUTO策略步骤1:设置生成策略为AUTO步骤3:运行新增方法 INPUT策略步骤1:设置生成策略为INPUT步骤2:添加数据手动设置ID步骤3:运行新增方法 ASSIGN_ID策略步骤1:设…

12种算法优化CNN-BiLSTM-Attention多特征输入单步预测,机器学习预测全家桶,持续更新,MATLAB代码...

截止到本期&#xff0c;一共发了12篇关于机器学习预测全家桶MATLAB代码的文章。参考文章如下&#xff1a; 1.五花八门的机器学习预测&#xff1f;一篇搞定不行吗&#xff1f; 2.机器学习预测全家桶&#xff0c;多步预测之BiGRU、BiLSTM、GRU、LSTM&#xff0c;LSSVM、TCN、CNN&…

leetcode正则表达式匹配问题(困难)

1.题目描述 2.解题思路&#xff0c;这道题自己没做出来&#xff0c;看了官方的题解&#xff0c;感觉对自己来说确实是比较难想的。使用了动态规划的解决方案&#xff0c;这种方案看题解都不一定能看明白&#xff0c;不过有个评论画图讲解的非常明白。其实仔细看题解的话&#…

Vue服务端渲染

Vue服务端渲染 一、服务端渲染基础 1、概述 我们现在可以使用Vue,React等开发SPA单页面应用&#xff0c;单页面应用的优点&#xff0c;用户体验好&#xff0c;开发效率高&#xff0c;可维护性好等。 缺点&#xff1a;首屏渲染时间长&#xff08;在客户端通过JS来生成html来…

ios搭建OpenGL环境

前言 本篇文章介绍在ios搭建OpenGL开发环境 在app的启动文章中&#xff0c;讲述了一个ios应用是如何启动的以及在IOS 13之后苹果公司推出的多窗口功能&#xff0c;通过app的启动这篇文章&#xff0c;我们基本能随心所欲的搭建一个app应用环境&#xff0c;搭建完成后的基本文件…

Vim工具使用全攻略:从入门到精通

引言 在软件开发的世界里&#xff0c;Vim不仅仅是一个文本编辑器&#xff0c;它是一个让你的编程效率倍增的神器。然而&#xff0c;对于新手来说&#xff0c;Vim的学习曲线似乎有些陡峭。本文将手把手教你如何从Vim的新手逐渐变为高手&#xff0c;深入理解Vim的操作模式&#…

高级编程 (1)

Linux软件编程: 1.Linux: 操作系统的内核 1.管理CPU 2.管理内存 3.管理硬件设备 4.管理文件系统 5.任务调度 2.Shell: 1.保护Linux内核(用户和Linux内核不直接操作,通过操作Shell,Shell和内核交互) 2.命令解释器 3.Shell命令: …

快速理解复杂系统组成学习内容整合

目录 一、复杂系统组成 二、接入系统 (Access System) 三、应用系统 (Application System) 四、基础平台 (Foundation Platform) 五、中间件 (Abundant External Middleware) 六、支撑系统 (Supporting System) 参考文章 一、复杂系统组成 复杂系统是由多个相互关联、相…