算法菜鸡备战3月2日传智杯省赛----0221

news2025/2/22 9:03:59





2209. 用地毯覆盖后的最少白色砖块 - 力扣(LeetCode)

力扣每日一题

class Solution {
public:
    // 白色最少 == 黑色最多
    int minimumWhiteTiles(string floor, int numCarpets, int carpetLen) {
        int n = floor.size();
        // 记忆化搜索
        vector memo(n + 1, vector<int>(numCarpets + 1, -1));
        auto dfs = [&](this auto&& dfs, int x, int y) {
            // 有y块地毯和x块砖,求对应的黑色最大值
            if (x <= y * carpetLen) {
                // 铺满了
                return x;
            }
            if (memo[x - 1][y] != -1) {
                // 记忆化搜索
                return memo[x - 1][y];
            }
            int& res = memo[x - 1][y];
            if (floor[x - 1] == '0') {
                // 遇到黑色
                return res = 1 + dfs( x - 1, y);
            }
            return res = max(
                       (y > 0 ? dfs( x - carpetLen, y - 1) + carpetLen : 0),
                       dfs( x - 1, y));
        };
        return n - dfs( n, numCarpets);
    }
};

2

2560. 打家劫舍 IV - 力扣(LeetCode)

class Solution {
public:
    int minCapability(vector<int>& nums, int k) {
        int left = 0, right = *max_element(nums.begin(), nums.end()),
            n = nums.size();
        auto check = [&](int mid) {
            int tmp = 0;
            for (int i = 0; i < n; i++) {
                if (nums[i] <= mid) {
                    i++;
                    tmp++;
                    if (tmp >= k) {
                        return true;
                    }
                }
            }
            cout << tmp << endl;

            return false;
        };
        while (left <= right) {
            // cout << left << ' ' << right << endl;
            int mid = (left + right) >> 1;
            if (check(mid)) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
};

3

778. 水位上升的泳池中游泳 - 力扣(LeetCode)

class Solution {
public:
    int m[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
    int swimInWater(vector<vector<int>>& grid) {
        int n = grid.size();
        if(n == 1){
            return grid[0][0];
        }
        int left = grid[0][0], right = 2500;
        auto bfs = [&](int mid) {
            queue<pair<int, int>> q;
            vector t(n, vector<bool>(n, false));
            q.push({0, 0});
            int qx, qy, x, y;
            while (q.size()) {
                auto [qx, qy] = q.front();
                q.pop();
                for (int i = 0; i < 4; i++) {
                    x = qx + m[i][0], y = qy + m[i][1];
                    if (x < 0 || x >= n || y < 0 || y >= n || t[x][y])
                        continue;
                    if (grid[x][y] > mid)
                        continue;
                    if (x == n - 1 && y == n - 1)
                        return true;
                    t[x][y] = true;
                    q.push({x, y});
                }
            }
            return false;
        };
        while (left <= right) {
            int mid = (left + right) >> 1;
            if (bfs(mid)) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
};

4

2616. 最小化数对的最大差值 - 力扣(LeetCode)

class Solution {
public:
    int minimizeMax(vector<int>& nums, int p) {
        if(p == 0) return 0;
        ranges::sort(nums);
        int n = nums.size();
        vector<int> tmp(n - 1);
        for(int i = 1;i <n;i++){
            tmp[i - 1] = nums[i] - nums[i - 1];
        }
        n--;
        int left = 0,right = *max_element(nums.begin(),nums.end());
        auto check = [&](int mid){
            int a = 0;
            for(int i = 0;i < n;i++){
                if(tmp[i] <= mid){
                    i++;
                    a++;
                    if(a >= p){
                        return true;
                    }
                }
            }
            return false;
        };
        while(left <= right){
            int mid = (left + right) >> 1;
            if(check(mid)){
                right = mid - 1;
            }else{
                left = mid + 1;
            }
        }
        return left;
    }
};

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

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

相关文章

python pandas下载

pandas pandas:就是一个可以处理数据的 python 库 核心功能&#xff1a; 数据的清洗&#xff1a;处理丢失值&#xff0c;重复值数据分析&#xff1a;计算和统计信息&#xff0c;或分组汇总数据可视化&#xff1a;结合 图标库&#xff08;Matplotlib&#xff09;完成数据可视化…

Python+Selenium+Pytest+POM自动化测试框架封装

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、测试框架简介 1&#xff09;测试框架的优点 代码复用率高&#xff0c;如果不使用框架的话&#xff0c;代码会显得很冗余。可以组装日志、报告、邮件等一些高…

猿大师中间件:网页直接内嵌本机EXE、OCX控件、ActiveX控件或桌面应用程序神器

猿大师中间件自从2019年发布以来&#xff0c;迄今为止不断迭代升级&#xff0c;给第三方提供了将自己的桌面程序和OCX控件支持直接内嵌到浏览器网页运行的赋能SDK开发包。 目前针对不同需求发布了三个成熟且商用的产品&#xff1a; 猿大师播放器&#xff1a;浏览器中直接原生…

C++,设计模式,【工厂方法模式】

文章目录 如何用汽车生产线理解工厂方法模式?一、传统生产方式的困境二、工厂方法模式解决方案三、模式应用场景四、模式优势分析五、现实应用启示✅C++,设计模式,【目录篇】 如何用汽车生产线理解工厂方法模式? 某个早晨,某车企CEO看着会议室里堆积如面的新车订单皱起眉…

鸿蒙-canvas-画时钟

文章目录 前言准备分析组成部分数值计算过程 开始第一步 画圆环第二步 画格子第三步 画数字第四、五步 画指针&定时更新最后一步 前言 你在 Android 上能画出来的东西&#xff0c;在鸿蒙上画不出来&#xff1f; 画个时钟嘛&#xff0c;有啥难的&#xff1f; 你行你上&…

【AI实践】阿里百炼文本对话Agent安卓版搭建

环境&#xff1a;安卓手机运行环境&#xff1b;WinsurfAI编程工具&#xff1b;阿里百炼提前创建Agent应用&#xff1b; 耗时&#xff1a;2小时&#xff1b; 1&#xff0c;新建安卓项目 完成文本输入&#xff0c;并将输入的文字显示出来。 2&#xff0c;安装SDK 参考文档 安…

算法很美笔记(Java)——动态规划

解重叠子问题&#xff08;当前解用到了以前求过的解&#xff09; 形式&#xff1a;记忆型递归或递推&#xff08;dp&#xff09; 动态规划本质是递推&#xff0c;核心是找到状态转移的方式&#xff0c;也就是填excel表时的逻辑&#xff08;填的方式&#xff09;&#xff0c;而…

Jest单元测试

由于格式和图片解析问题&#xff0c;可前往 阅读原文 前端自动化测试在提高代码质量、减少错误、提高团队协作和加速交付流程方面发挥着重要作用。它是现代软件开发中不可或缺的一部分&#xff0c;可以帮助开发团队构建可靠、高质量的应用程序 单元测试&#xff08;Unit Testi…

OnlyOffice:前端编辑器与后端API实现高效办公

OnlyOffice&#xff1a;前端编辑器与后端API实现高效办公 一、OnlyOffice概述二、前端编辑器&#xff1a;高效、灵活且易用1. 完善的编辑功能2. 实时协作支持3. 自动保存与版本管理4. 高度自定义的界面 三、后端API&#xff1a;管理文档、用户与权限1. 轻松集成与定制2. 实时协…

骶骨神经

骶骨肿瘤手术后遗症是什么_39健康网_癌症 [健康之路]匠心仁术&#xff08;七&#xff09; 勇闯禁区 骶骨肿瘤切除术

Nacos学习(二)——继承Feign与Config中心

目录 一、集成Feign (一)基础用法 1.添加openfeign依赖 2. 开启openFeign注解扫描 3.创建ProviderService接口 4.修改ConsumerController (二)OpenFeign日志配置 (三)参数传递 1.参数传递的问题 2.参数传递的方式 2.1URL路径传参 2.2URL上拼接参数 2.3body传参 …

计算机网络安全之一:网络安全概述

1.1 网络安全的内涵 随着计算机和网络技术的迅猛发展和广泛普及&#xff0c;越来越多的企业将经营的各种业务建立在Internet/Intranet环境中。于是&#xff0c;支持E-mail、文件共享、即时消息传送的消息和协作服务器成为当今商业社会中的极重要的IT基础设施。然而&#xff0…

uniapp中引入Vant Weapp的保姆级教学(包含错误处理)

废话不多说&#xff0c;直接上方法&#xff0c;网上的教学好多都是错误的 1.安装vant weapp 在Hbuilder的终端&#xff0c;输入以下代码 npm install vant/weapp -S --production 2.新建wxcomponents文件夹 在项目的跟目录新建一个“wxcomponents’文件夹&#xff0c;与app.…

基于Nanopi duo2的WiFi智能摄像头

1.固件包烧录 https://wiki.friendlyelec.com/wiki/index.php/NanoPi_Duo2/zh#.E8.BF.9E.E6.8E.A5WiFi 固件包链接以及烧录工具都在上面链接中 烧录过程 使用读卡器将SD卡插入到电脑,然后打开烧录工具 2.通过串口工具连接板子使其连接WiFi 对应的串口工具,就是这个HyperT…

Java 内存区域详解

1 常见面试题 1.1 基本问题 介绍下Java内存区域&#xff08;运行时数据区&#xff09;Java对象的创建过程&#xff08;五步&#xff0c;建议能够默写出来并且要知道每一步虚拟机做了什么&#xff09;对象的访问定位的两种方式&#xff08;句柄和直接指针两种方式&#xff09;…

MyBatis框架详解与核心配置解读

目录 前言 一、MyBatis框架概述 1.1 什么是MyBatis 1.2 MyBatis的优点 二、MyBatis的使用入门与案例 2.1 MyBatis核心配置文件&#xff08;mybatis-config.xml&#xff09; 2.2 XML映射文件&#xff08;UserMapper.xml&#xff09; 三、MyBatis的常用注解及其用法 3.1…

Windows 快速搭建C++开发环境,安装C++、CMake、QT、Visual Studio、Setup Factory

安装C 简介 Windows 版的 GCC 有三个选择&#xff1a; CygwinMinGWmingw-w64 Cygwin、MinGW 和 mingw-w64 都是在 Windows 操作系统上运行的工具集&#xff0c;用于在 Windows 环境下进行开发和编译。 Cygwin 是一个在 Windows 上运行的开源项目&#xff0c;旨在提供类Uni…

Unity Excel导表工具转Lua文件

思路介绍 借助EPPlus读取Excel文件中的配置数据&#xff0c;根据指定的不同类型的数据配置规则来解析成对应的代码文本&#xff0c;将解析出的字符串内容写入到XXX.lua.txt文件中即可 EPPlus常用API //命名空间 using OfficeOpenXml;//Excel文件路径 var fileExcel new File…

Helix——Figure 02发布通用人形机器人控制的VLA:一组神经网络权重下的快与慢双系统,让两个机器人协作干活

前言 过去一周&#xff0c;我花了很大的心思、力气&#xff0c;把deepseek的GRPO、MLA算法的代码解析通透&#xff0c;比如GRPO与PPO的详细对比&#xff0c;再比如MLA中&#xff0c;图片 公式 代码的一一对应 2.20日晚&#xff0c;无意中刷到figure 02发布Helix的一个演示视频…

进程的介绍--进程状态/切换

1.冯 • 诺依曼体系结构 1.1 体系结构 冯•诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。数学家冯•诺依曼提出了计算机制造的三个基本原则&#xff0c;即采用二进制逻辑、程序存储执行以及计算机由五个部分组成&#x…