【LeetCode第1场双周赛】

2023-11-13

第 1 场双周赛

A.

模拟

class Solution {
public:
    int fixedPoint(vector<int>& arr) {
        for(int i = 0; i < arr.size(); ++i)
            if(arr[i] == i) return i;
        return -1;
    }
};

B.

模拟,hash

class Solution {
public:
    vector<vector<int>> indexPairs(string text, vector<string>& words) {
        unordered_map<string, int> mp;
        vector<vector<int>> res;
        for(auto& u : words) mp[u] = 1;
        for(int i = 0; i < text.size(); ++i) {
            string temp = "";
            for(int j = i; j < text.size(); ++j) {
                temp += text[j];
                if(mp.count(temp)) res.push_back({i, j});
            }
        }
        return res;
    }
};

C.

  • 解法一:匈牙利算法,二分图的最大完美匹配KM算法
  • 解法二:考查是否会全排列的剪枝
    众所周知:全排列有 n ! n! n!种, 10 ! 10! 10! 3628800 3628800 3628800,可以通过本题
    但是如果爆搜不加剪枝的话是 1 0 10 10^{10} 1010,无法通过。
    加上二进制 b i t bit bit优化即可优化成为 10 ! 10! 10!
class Solution {
public:
    int assignBikes(vector<vector<int>>& workers, vector<vector<int>>& bikes) {
    	w = workers;
    	b = bikes;
        int nb = b.size();
        memset(lo, -1, sizeof lo);
        for(int i = 0; i < nb; ++i)
            lo[1 << i] = i;
        res = 0x3f3f3f3f;
        int bit = (1 << nb) - 1;
        dfs(0, 0, bit);
        return res;
    }
    
private:
    vector<vector<int>> w;
    vector<vector<int>> b;
    int res;
    int lo[1024];
    
    void dfs(int u, int sum, int bit) {
        if(u == w.size()) {
            res = min(res, sum);
            return ;
        }
        
        int temp = bit;
        while(bit > 0) {
            int bi = bit & (-bit);
            dfs(u + 1, sum + abs(w[u][0] - b[lo[bi]][0]) + abs(w[u][1] - b[lo[bi]][1]), temp - bi);
            bit -= bi;
        }
    }
};

D.

数位 d p dp dp模板,也是较难的数位dp。
当前计算 x x x的个数,考虑 d p [ i ] [ j ] dp[i][j] dp[i][j]表示前 i i i位数,已经有 j j j个为 x x x这个状态下的数的 x x x数的个数。

class Solution {
public:
    int digitsCount(int d, int low, int high) {
        return int(dp(high, d) - dp(low - 1, d));
    }
private:
    int f[30][30];
    int digit[30];
    
    long long dfs(bool lead, bool limit, int dep, int num, int cnt) {
        if(dep == 0) return cnt;
        if(lead && !limit && ~f[dep][cnt]) return f[dep][cnt];
        int last = limit ? digit[dep] : 9;
        
        long long res = 0;
        for(int i = 0; i <= last; ++i)
            res += dfs(lead | i, limit && i == digit[dep], dep - 1, num, cnt + ((lead | i) && i == num));
        if(lead && !limit) f[dep][cnt] = res;
        return res;
    }
    
    long long dp(int x, int d) {
        int g = 0;
        memset(f, -1, sizeof f);
        while(x > 0) digit[++g] = x % 10, x /= 10;
        // lead, limit, dep, num, cnt
        return dfs(false, true, g, d, 0);
    }
    
    
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【LeetCode第1场双周赛】 的相关文章

  • Mysql学习(十一) -- 常见问题处理

    1 MySQL数据库cpu飙升的话你会如何分析 重点是定位问题 使用top观察mysqld的cpu利用率 切换到常用的数据库 使用show full processlist 查看会话 观察是哪些sql消耗了资源 其中重点观察state指标
  • 5G到底有哪些能力

    来源 工信头条 作者 华为5G首席科学家 童文 摘要 华为5G首席科学家告诉你5G到底有哪些能力 2019年是5G产业进入全面商用的关键一年 全球5G网络的部署已经启动 2018年6月 5G独立组网标准冻结 5G完成了第一阶段全功能eMBB
  • Android Execution failed for task ‘:app:mergeDebugAssets‘. > java.nio.file.AccessDeniedException:错误

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 错误详情图 在项目中引入萤石云的依赖后 compile com ezviz sdk ezuikit 2 2 1 就开始报这个错误 前前后
  • (.*?)正则表达式

    1 匹配任意除换行符 n 外的字符 2 表示匹配前一个字符0次或无限次 3 表示前边字符的0次或1次重复 4 或 后跟 表示非贪婪匹配 即尽可能少的匹配 如 重复任意次 但尽可能少重复 5 表示匹配任意数量的重复 但是在能使整个匹配成功的前
  • cookies添加python selenium

    def add ck a browser delete all cookies 删除原有cookies cookies 在浏览器里面复制 a BIDUPSID B8D733AE1AF91ABF07AE6448B2DF91AA PSTM 16

随机推荐

  • 预约到家按摩小程序开发定制同城服务

    随着生活节奏加快 生活压力也随之而来 很多人忙于工作与生计 身体和心理两方面都在承受重压 而按摩能够消除身体的疲惫 增强人的身体体质 在劳累过后放松身心按摩一会儿 可以快速恢复精神状态 增强免疫力和抵抗力 按摩的好处很多 但由于现代人时间和
  • 0001.两数之和(简单)

    代码 Java版 2020 07 03 public int twoSum int nums int target int ans new int 2 for int i 0 i lt nums length i for int j i 1
  • c#线程二

    下面的表格列展了 NET对协调或同步线程动作的可用的工具 简易阻止方法 构成 目的 Sleep 阻止给定的时间周期 Join 等待另一个线程完成 锁系统 构成 目的 跨进程 速度 lock 确保只有一个线程访问某个资源或某段代码 否 快 M
  • 记录WIN10选择文件右键后资源管理器无响应的解决方法

    现象 WIN10选择文件 右键文件后资源管理器无响应 解决方法 找到一种亲测可用的解决方法 即清除文件资源管理器历史记录 详细操作 1 打开文件资源管理器 2 点击左上角 文件 点击 选项 找到 隐私 下方的 清除 按钮 点击 清除 最后点
  • DVWA - XSS DOM (high)

    随便选择一个 url中会出现我们选的哪个 http 127 0 0 1 DVWA master vulnerabilities xss d default 3Cscript
  • CVPR 2022

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 作者 轻尘一笑 已授权转载 源 知乎 编辑 CVer https zhuanlan zhihu com p 489839282 导读 在CVPR 2022上 新加坡南洋
  • 【H5】canvas画布像素的设置与获取:

    H5 canvas画布像素的设置与获取 getImageData 从Canvas画板上取得指定位置的像素数据 putImageData 将所得到的像素数据描画到Canvas画板上 createImageData 方法创建新的空白像素 Ima
  • IPSec基础知识

    文章目录 IPSec基础知识 IPSec特性 IPSec组成部分 IPSec对等体 IPSec隧道 安全联盟 Security Association AH安全协议 AH包结构 ESP安全协议 ESP包结构 AH和ESP比较 封装模式 传输
  • 解决Rational Rose找不到suite objects.dll文件的问题

    问题描述 打开Rational Rose 2007时 发现有以下问题 提示找不到suite objects dll文件 需要重装软件 但是查看Rational Rose 2007安装文件夹 发现Common文件夹下有suite object
  • Windows系统管理七:本地组策略&注册表及其维护与优化

    本地组策略 概述 组策略 英语 Group Policy 是微软 Windows NT 家族操作系统的一个特性 它可以控制用户帐户和计算机帐户的工作环境 组策略提供了操作系统 应用程序和活动目录中用户设置的集中化管理和配置 组策略的其中个版
  • Ceph 集群在线迁移方案

    一 环境准备 1 1 场景介绍 最近收到一个需求 客户希望将运行了多年的ceph集群服务器全部更换掉 因为这些老服务器性能和容量都已经无法满足当前业务的需求 并希望在迁移到新服务器的过程中 业务不中断 在参考一些网上的方案后 选择了一个方案
  • 解决Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/问题

    昨天在使用docker 时 将 image 文件从仓库抓取到本地一直报错 经过尝试 终于得以解决 错误信息如下 root archlinux docker image pull library hello world Using defau
  • ROS仿真机器人(安装、配置、测试、建图、定位、路径规划)

    ROS机器人仿真 安装 配置 测试 建图 定位 路径规划 1 ROS安装与配置 1 1 安装虚拟机软件 1 2 虚拟一台主机 1 3 安装ubuntu 1 4 在ubuntu中安装ROS机器人操作系统 1 4 1 配置ubuntu的软件和更
  • Exams/m2014 q4k

    Implement the following circuit module top module input clk input resetn synchronous reset input in output out reg 2 0 t
  • 香港经典古装电视剧

    楚留香 射雕英雄传 倚天屠龙记 金枝欲孽 大唐双龙传 寻秦记 萧十一郎 小李飞刀 云海玉弓缘 西游记 封神榜 洗冤录 锦绣前程 杨门女将 杨家将 笑傲江湖 苏乞儿 绝代双骄 鹿鼎记 成吉思汗 神雕侠侣 陆小凤 书剑恩仇录 啼笑姻缘 http
  • Java I/O (第二版) I/O基础 I/O概述

    第一部分 第一章 介绍I O 输入和输出 的简写I O 它是任何操作系统和程序设计语言所必须的基础功能 只有空想家才会喜欢没有输入输出的程序 同时 IO的话题似乎对程序员没有什么吸引力 其实不然 我们应该有很多有趣的东西需要学习在IO中 J
  • react从入门到精通总结(一)

    React简介 React 是一个用于构建用户界面的 JS 库 主要用于构建UI React由美国的公司Facebook在2011年诞生并于2013年开源发布 特点 1 声明式设计 React采用声明范式 可以轻松描述应用 2 高效使用虚拟
  • Django 连接redis

    安装 pip install django redis redis安装 docker pull redis latest docker run d name redis p 6379 6379 redis requirepass passw
  • STL容器

    这里写目录标题 三大组件介绍 1 容器 2 算法 3 迭代器 STL容器 string容器 vector容器 deque容器 stack容器 queue容器 list容器 set multiset容器 map multimap容器 常见面试
  • 【LeetCode第1场双周赛】

    第 1 场双周赛 A 模拟 class Solution public int fixedPoint vector