特辣的海藻!15

news2025/4/13 12:38:59

1.迷宫 - 蓝桥云课

2.外卖店优先级 - 蓝桥云课

3.后缀表达式 - 蓝桥云课


1.迷宫 - 蓝桥云课

import java.util.*;

public class Main {
    static class Node {
        int x;
        int y;
        String str;
        public Node(int x, int y, String str) {
            this.x = x;
            this.y = y;
            this.str = str;
        }        
    }
    static char[][] chs = new char[30][50];
    static boolean[][] vis = new boolean[30][50];

    static void bfs() {
        Queue<Node> q = new LinkedList<>();
        int[] dx = {1, 0, 0, -1};
        int[] dy = {0, -1, 1, 0};
        char[] dir = {'D', 'L', 'R', 'U'};

        q.offer(new Node(0,0,""));
        vis[0][0] = true;
        String res = "";

        while(!q.isEmpty()) {
            Node t = q.poll();
            int x = t.x;
            int y = t.y;
            String str = t.str;
            
            if(x==29 && y== 49) {
                res = str;
                break;
            }

            for(int i = 0; i < 4; i++) {
                int nx = x + dx[i];
                int ny = y + dy[i];
                String nStr = str+dir[i];

                if(nx>=0 && nx<30 && ny>=0 && ny<50 && !vis[nx][ny] && chs[nx][ny] =='0') {
                    q.offer(new Node(nx, ny, nStr));
                    vis[nx][ny] = true;
                }
            }
        }
        System.out.print(res);        
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        for(int i = 0; i < 30; i++)
            chs[i] = scan.nextLine().toCharArray();

        bfs();
        scan.close();
    }
}

走迷宫一看就是前几天还没记下来的bfs。。。这里主要是要记录路径。 那就在每个节点上加上从起点到这个点的路径一路记下来,这样就不需要前驱数组记录节点然后最后反向构建路径了。

2.外卖店优先级 - 蓝桥云课

 

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int m = scan.nextInt();
        int t = scan.nextInt();   

        HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();
        for(int i = 0; i < m; i++) {
            int ts = scan.nextInt();
            int id = scan.nextInt();
            if(map.containsKey(ts)) {
                map.get(ts).add(id);
            }
            else {
                map.put(ts, new ArrayList<>());
                map.get(ts).add(id);
            }
        }

        boolean[] inCache = new boolean[n+1];
        int[] pri = new int[n+1];
         
        // 按每一个时刻来遍历
        for(int ts = 1; ts <= t; ts++) {
            HashSet<Integer> processed = new HashSet<>();
            if(map.containsKey(ts)) {
                for(int store : map.get(ts)) {
                    pri[store] += 2;    
                    processed.add(store);
                }
            }
            
            for(int store = 1; store <= n; store++) {
                if(!processed.contains(store)) {
                    pri[store] = pri[store]-1 >= 0 ? pri[store]-1 : 0;
                }

                if(pri[store] > 5)
                    inCache[store] = true;
                else if(pri[store] <= 3)
                    inCache[store] = false;
            }
        }
        
        int res = 0;
        for(boolean b : inCache) 
            res = b ? res+1 : res;
        
        System.out.print(res);
        scan.close();
    }   
}

这个题目吧,,就是模拟,考验对代码和数据结构的掌握熟练度。

用一个HashMap来存储每个时间点有订单的外卖店。用一个布尔数组,每个时间点遍历所有的外卖店,如果满足要求就标记为true,反则反之。我那60%错在没有正确处理每个时间点没有订单的外卖点和记录结果的数组。怎么样实现这个呢?就是用一个set集合,有订单处理过的就加进去相当于做了个标记,妙哉妙哉。。。

3.后缀表达式 - 蓝桥云课

import java.util.*;

public class Main {
    public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int m = scan.nextInt();
        int t = n+m+1;

        int[] nums = new int[t];
        for(int i = 0; i < t; i++) {
            nums[i] = scan.nextInt();
        }

        if(m == 0) {
            int res = 0;
            for(int num : nums)
                res += num;
            System.out.print(res);
            return;
        }

        Arrays.sort(nums);

        int res = 0;
        res += nums[t-1];
        
        res -= nums[0];

        for(int i = 1; i < t-1; i++) {
            res += Math.abs(nums[i]);
        }
        
        System.out.print(res);
        scan.close();
    }
    
} 

这个题目很有意思的点就是后缀表达式可以通过括号隐含该改变运算顺序。那么这样就可以将多个减号转换为加法。

  • 最大数一定用加号
     如果最大数是正数那肯定毋庸置疑用加号嘛,可以最大程度的使结果最大
     如果最大数是负数,也用加号,因为这个时候这个最大数的绝对值是最小的,用加号就相当于减去一个最小的数字。
  • 最小数一定用减号
    如果最小数是正数,那没话说。
    如果最小数是负数,用减号。就加上了一个很大的绝对值
  • 中间数字都取绝对值相加

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

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

相关文章

算法-- js排序

汇总 注&#xff1a;以下log n 是 O(log2n) 注&#xff1a;快速排序实际应用中通常最优&#xff0c;但需避免最坏情况。 1 快速排序 [快速排序的思路] 分区&#xff1a;从数组中任意选择一个“基准”&#xff0c;所有比基准小的元素放在基准前面&#xff0c;比基准大的元素…

stm32week10

stm32学习 七.CAN 7.STM32 CAN外设 标识符过滤器&#xff1a; 每个过滤器的核心由两个32位寄存器组成&#xff1a;R1[31:0]和R2[31:0] FSCx&#xff1a;位宽设置&#xff0c;置0为16位&#xff0c;置1为32位 FBMx&#xff1a;模式设置&#xff0c;置0为屏蔽模式&#xff0c;…

看雪 get_pwn3(2016 CCTF 中的 pwn3)

get_pwn3(2016 CCTF 中的 pwn3) 格式化字符串漏洞 get_pwn3(2016 CCTF 中的 pwn3) (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file pwn3 pwn3: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, …

python全栈-JavaScript

python全栈-js 文章目录 js基础变量与常量JavaScript引入到HTML文件中JavaScript注释与常见输出方式 数据类型typeof 显示数据类型算数运算符之加法运算符运算符之算术运算符运算符之赋值运算符运算符之比较运算符运算符之布尔运算符运算符之位运算符运算符优先级类型转换 控制…

操作系统概述(3)

批处理系统 1.单道批处理系统 单道批处理系统是成批地处理作用&#xff0c;并且始终只有一道作业在内存中的系统。优点&#xff1a;提高系统资源的利用率和系统吞吐量。缺点&#xff1a;系统中的资源得不到充分利用。 2.多道批处理系统 引入多道程序设计技术&#xff0c;是…

SolidWorks2025三维计算机辅助设计(3D CAD)软件超详细图文安装教程(2025最新版保姆级教程)

目录 前言 一、SolidWorks下载 二、SolidWorks安装 三、启动SolidWorks 前言 SolidWorks 是一款由法国达索系统&#xff08;Dassault Systmes&#xff09;公司开发的三维计算机辅助设计&#xff08;3D CAD&#xff09;软件&#xff0c;广泛用于机械设计、工程仿真和产品开…

JBDC Java数据库连接(1)

目录 JDBC概述 定义 JDBC API 实例 JDBC搭建 建立与数据库连接&#xff1a; 形式&#xff1a; 实例 获得Satement执行sql语句 Satement中的方法: 实例 实例 JDBC概述 定义 JDBC&#xff08;Java DataBase Connectivity&#xff09;java数据库连接是一种用于执行SQL…

git rebase复杂场景验证

经常面临复杂的分支管理&#xff0c;这里对几种场景的行为做一些验证。 结论总结 git rebase br_name&#xff1a;等价与新建br_name分支&#xff0c;然后找到当前分支与br_name分支的分叉点。然后把分叉点以后的提交&#xff08;当前分支&#xff09;一个一个的cherry-pick过…

从搜索丝滑过渡到动态规划的学习指南

搜索&动态规划 前言砝码称重满分代码及思路solution 1&#xff08;动态规划&#xff09;solution 2&#xff08;BFS&#xff09; 跳跃满分代码及思路solution 1(动态规划)solution 2 (BFS) 积木画满分代码及思路动态规划思路讲解solution 前言 本文主要是通过一些竞赛真题…

(一)栈结构、队列结构

01-线性结构-数组-栈结构 线性结构&#xff08;Linear List)是由n&#xff08;n>0)个数据元素&#xff08;结点&#xff09; a[0], a[1], a[2], a[3],...,a[n-1]组成的有限序列 数组 通常数组的内存是连续的&#xff0c;所以在知道数组下标的情况下&#xff0c;访问效率是…

MySQL基础 [五] - 表的增删查改

目录 Create&#xff08;insert&#xff09; Retrieve&#xff08;select&#xff09; where条件 ​编辑 NULL的查询 结果排序(order by) 筛选分页结果 (limit) Update Delete 删除表 截断表&#xff08;truncate&#xff09; 插入查询结果&#xff08;insertselect&…

4.7学习总结 可变参数+集合工具类Collections+不可变集合

可变参数&#xff1a; 示例&#xff1a; public class test {public static void main(String[] args) {int sumgetSum(1,2,3,4,5,6,7,8,9,10);System.out.println(sum);}public static int getSum(int...arr){int sum0;for(int i:arr){sumi;}return sum;} } 细节&#xff1a…

OpenGL学习笔记(简介、三角形、着色器、纹理、坐标系统、摄像机)

目录 简介核心模式与立即渲染模式状态机对象GLFW和GLAD Hello OpenGLTriangle 三角形顶点缓冲对象 VBO顶点数组对象 VAO元素缓冲对象 EBO/ 索引缓冲对象 IEO 着色器GLSL数据类型输入输出Uniform 纹理纹理过滤Mipmap 多级渐远纹理实际使用方式纹理单元 坐标系统裁剪空间 摄像机自…

vmware虚拟机上Ubuntu或者其他系统无法联网的解决方法

一、检查虚拟机是否开启了网络服务 打开方式&#xff1a;控制面板->-管理工具--->服务 查找 VMware DHCP Service 和VMware NAT Service &#xff0c;确保这两个服务已经启动。如下图&#xff0c;没有启动就点击启动。 二、设置网络类型 我们一般使用前两种多一些&…

OpenVLA-OFT——微调VLA时加快推理的三大关键设计:支持动作分块的并行解码、连续动作表示以及L1回归(含输入灵活化及对指令遵循的加强)

前言 25年3.26日&#xff0c;这是一个值得纪念的日子&#xff0c;这一天&#xff0c;我司「七月在线」的定位正式升级为了&#xff1a;具身智能的场景落地与定制开发商 &#xff0c;后续则从定制开发 逐步过渡到 标准产品化 比如25年q2起&#xff0c;在定制开发之外&#xff0…

LabVIEW 油井动液面在线监测系统​

项目背景 传统油井动液面测量依赖人工现场操作&#xff0c;面临成本高、效率低、安全风险大等问题。尤其在偏远地区或复杂工况下&#xff0c;测量准确性与时效性难以保障。本系统通过LabVIEW虚拟仪器技术实现硬件与软件深度融合&#xff0c;为油田智能化转型提供实时连续监测解…

泛微ECOLOGY9 解决文档中打开发票类PDF文件无内容的配置方法

解决文档中打开发票类PDF文件无内容的配置方法 情况如下&#xff1a; 如果OA文档中打开的PDF文件如下图这样空白的&#xff0c;那么可以试试下面的方法进行解决。 解决方法&#xff1a; 在OA安装目录中找到 ecology/WEB-INF/prop/docpreview.properties 配置文件&#xff…

大模型RAG项目实战-知识库问答助手v1版

安装 Ollama 根据官网指导&#xff0c;安装对应版本即可。 下载安装指导文档&#xff1a; handy-ollama/docs/C1/1. Ollama 介绍.md at main datawhalechina/handy-ollama 注意&#xff1a;在 Windows 下安装 Ollama 后&#xff0c;强烈建议通过配置环境变量来修改模型存储…

统计子矩阵

1.统计子矩阵 - 蓝桥云课 统计子矩阵 问题描述 给定一个 NM 的矩阵 A&#xff0c;请你统计有多少个子矩阵&#xff08;最小 11&#xff0c;最大 NM&#xff09;满足子矩阵中所有数的和不超过给定的整数 K&#xff1f; 输入格式 第一行包含三个整数 N&#xff0c;M 和 K。 …

C++第1讲:基础语法;通讯录管理系统

黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 对应的笔记&#xff1a; https://github.com/AccumulateMore/CPlusPlus 标签: C&C | welcome to here 一、C初识 1.1.注释 1.2.变量 1.3.常量&#xff1a;记录程序中不可更改的数据 1.4.关…