秋招突击——6/28、6.29——复习{数位DP——度的数量}——新作{}

文章目录

    • 引言
    • 复习
      • 数位DP——度的数量
        • 个人实现
        • 参考实现
    • 总结

引言

  • 头一次产生了那么强烈的动摇,对于未来没有任何的感觉的,不知道将会往哪里走,不知道怎么办。可能还是因为实习吧,再加上最近复习也没有什么进展,并不知道该怎么办,投的提前批基本上没什么回应,投的实习基本上都挂了。
  • 在加上不在学校,没有办法和同学一块共享信息,一个人总是觉得有点孤零零的,难受,并且是忧郁的。
  • 想那么多也没用,还是得继续复习。按照我的计划来。
  • 上午出去有事,基本上没有刷算法,下午才开始刷算法。

复习

数位DP——度的数量

在这里插入图片描述

  • 这一类题型之前基本上都没有做过,现在得好好补充一下,感觉听名字和状态压缩DP很像。

注意

  • X和Y是区间长度,是INT类型的数字的上限,并且只能是正数
  • 左右区间的都是闭合的,所以临界条件是两边相等,仅仅只有一个数字。
个人实现
  • 首先,这里得先解决一个数字,才能解决所有的数字,所以得先专注于解决一个数字的判定。
  • 这里是B的整数次幂,所以可以想成若干进制去思考,之前应该做过类似的出发是一个思路,肯定是能够先用高次幂的结果进行表示,然后再用低次幂的结果进行表示。然后在判定这个数字能否用一个较低位进行表示,这道题就算是结束了。
#include <iostream>
#include <vector>using namespace std;int x,y,k,b;
vector<int> exp;int main(){cin>>x>>y;cin>>k>>b;// 保存b的不同次幂的中间结果int res = 0;int i=1;exp.push_back(1);for ( i = b; i <= y ; i *= b)exp.push_back(i);for (int i = x; i <= y; ++i) {// 判断每一个数字是否能够使用对应的数字进行保存int cnt = k,temp = i;for (int j = exp.size() - 1; j >= 0 ; j --) {if (exp[j] <= temp){temp -= exp[j];cnt --;if (cnt >= 0 ){if (cnt == 0 && temp == 0)res ++;}elsebreak;}}}cout<<res;
}

实验结果如下

  • 我的时间复杂度太高了,遍历所有的数字,然后在遍历每一个数字,看看能否出现对应的结果。相当于使(y - x) * k相当远的平方的运算时间复杂度。
    在这里插入图片描述
参考实现
  • 这里应该是使用了数位DP,之前并没有学过。

数位DP的相关技巧

  • 区间转成边界相减问题
    • 计算的区间【X,Y】中所有符合条件的数字,使用1到Y的所有符合条件的数字的数量,减去1到X中所有符合条件的数字的数量。【X,Y】 = f(Y) - f(X - 1)
  • 从树的角度去考虑数位DP问题
    • 对于每一个数字的位数,只有两种情况,就是加入对应的分支以及不加入对应的分支等。

这里完全跳过了,看不懂,大约花了差不多一个小时,视频讲解有问题在加上题目的难度比较大,以后调整自己的复习思路,不在学习这种难度较高的算法题,主要还是刷对应的笔试题库

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 35;int l, r, k, b;
int a[N], al;
int f[N][N];int dp(int pos, int st, int op) //op: 1=,0<
{//枚举到最后一位数位,是否恰有k个不同的1(也是递归的终止条件)if (!pos) return st == k;//记忆化搜索,前提是不贴着上界(可以枚举满这一位所有的数字)if (!op && ~f[pos][st]) return f[pos][st];//01数位dp,贴着上界时,本轮能枚举的最大数就是上界数位的数字和1之间的最小值int res = 0, maxx = op ? min(a[pos], 1) : 1;for (int i = 0; i <= maxx; i ++ ){if (st + i > k) continue;res += dp(pos - 1, st + i, op && i == a[pos]);}return op ? res : f[pos][st] = res;
}
int calc(int x)
{al = 0; memset(f, -1, sizeof f);        //模板的必要初始化步骤while (x) a[ ++ al] = x % b, x /= b;  //把x按照进制分解到数组中return dp(al, 0, 1);
}
int main()
{cin >> l >> r >> k >> b;cout << calc(r) - calc(l - 1) << endl;return 0;
}

作者:一只野生彩色铅笔
链接:https://www.acwing.com/solution/content/66855/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

总结

  • 明天朋友来家里做客,忙完这一阵之后,就闭门谢客,专心好好准备秋招。马上第一批就开始了,但是我的项目还是没有准备好,进度太慢了,不行的。

  • 我就在想,我真的有必要刷这么多算法进阶题目吗?今天的数位DP好难呀,感觉要花一上午,不如多花点时间去做热搜题目的一百道题。感觉到此为止了,不想再花时间去做这写题目了,数位DP太难了,根本就不会做。讲的有问题。

  • 不想浪费时间了,单纯的针对一百热题吧,不在刷什么难题了,只能用题库堆起来,然后如果有不会的题目,再去看他的讲解,不能在这样往下跟了,然后每天上午的题目,就是单纯复习现在已经学到的相关算法了。 我是找工作的,不是面对算法竞赛的。

  • 大概看了一下,就课程安排来说,虽然刷的是leetcode,但是还是会提到对应的题型进行讲解,所以转变以下自己的思路,不然这样化的时间实在太多了,完全没有必要。

  • 而且我大概看了一下,基本上我在面试中遇到的问题,在这里基本上都能遇见,在腾讯面试中遇见的使用LRU,然后华为面试中遇见的三数之和等等。还是调整一下重点,重点围绕以下两个课题,分别是

    • leetcode热题100道
    • 面试经典150道
  • 差不多一天三到四道题,差不多一个月刷一遍,还能回顾一遍。不要浪费时间。

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

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

相关文章

Vmware Windows虚拟机卡死了

每次遇到这个问题我都想骂娘&#xff01;&#xff01;&#xff01;&#xff01; 这一次是怎么解决的呢&#xff1f; 解决&#xff1a;我给虚拟机连上网就好了&#xff01; 重启&#xff0c;开关机&#xff0c;一点用都没有。

前端 JS 经典:箭头函数的意义

箭头函数是为了消除函数的二义性。 1. 二义性 函数的二义性指函数有不同的两种用法&#xff0c;就造成了二义性&#xff0c;函数的两种用法&#xff1a;1. 指令序列。2. 构造器 1.1 指令序列 就是调用函数&#xff0c;相当于将函数内部的代码再从头执行一次。 1.2 构造器 …

【Linux 工具 】 tcpdump详细使用说明

目录 1. 安装 tcpdump 2. 使用 tcpdump 命令 3. 监听所有网络接口 4. 监听指定网络接口 5. 保存数据包到文件 6. 读取保存的数据包文件 7. 过滤数据包 过滤源 IP 地址: 过滤目标 IP 地址: 过滤源和目标 IP 地址: 过滤指定端口: 过滤指定协议: 8. 显示数据包详…

爬虫实战:使用PHP爬取携程旅游信息

随着旅游业的不断发展&#xff0c;旅游信息变得非常丰富。为了方便大家获取更全面、准确的旅游信息&#xff0c;我们可以使用爬虫来抓取旅游网站上的数据&#xff0c;并进行分析和处理。本文将介绍如何使用php爬取携程旅游信息。 爬虫基础知识 爬虫是一种自动化程序&#xff…

Android SurfaceFlinger——OpenGL ES基础介绍(十二)

前面的文章我们介绍了 HWC,知道他在 Android 系统中用于硬件加速屏幕合成的一个组件。负责将多个 Surface(包括那些可能通过 OpenGL ES 渲染的内容)合成到一起,并输出到屏幕。HWC 利用底层硬件(如 GPU)来执行合成操作,减少 CPU 的负担,提高效率和电池寿命。 一、概述 …

如何借助 LLM 设计和实现任务型对话 Agent

1 引言 在人工智能的快速发展中&#xff0c;任务型对话 Agent 正成为提升用户体验和工作效率的关键技术。这类系统通过自然语言交互&#xff0c;专注于高效执行特定任务&#xff0c;如预订酒店或查询天气。尽管市场上的开源框架如 Rasa 和 Microsoft Bot Framework 在对话理解…

【笔记】一些PDN建立成功后返回的IP地址情况及日志分析

背景 Protocol满足运营商需求,即便是PDN的通的,也可能因为网络问题导致MMS、热点等业务无法正常工作。(丢包?网络无响应?服务器异常) 或者Protocol跟运营商需求不一致,直接SETUP_DATA_CALL失败了。 一般而言,如果APN Protocol 参数配置不符合运营商要求,在 PDN 建立…

正则表达式结合自定义function使用replace

replace使用正则表达式和function替换 js代码 html代码 场景描述 输入不同数量的人名&#xff0c;根据不同的人数打印不同的描述 代码分析 首先在js代码中使用templates定义了5个模板&#xff0c;通过 var idx Math.min(names.length, 4)根据人数获取对应的模板的索引&…

tqdm库教程 - 进度条可视化利器

tqdm库教程 - 进度条可视化利器 1. 什么是tqdm?2. tqdm的基本用法3. tqdm的高级用法3.1 自定义描述3.2 手动更新进度条3.3 在文件处理中使用tqdm 4. tqdm的其他特性4.1 嵌套进度条4.2 在Jupyter Notebook中使用 5. 总结 1. 什么是tqdm? tqdm是一个Python库,用于在循环或长时…

揭秘多年免费听音乐、直播、影视的自用方案:手机、电视、电脑多平台0成本实现媒体自由(内含相关资源)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 多媒体自由 📒🎧 音乐资源📱安卓平台🍎 苹果平台💻 PC平台🎥 影视资源📱 安卓平台🍎 苹果平台📺 电视盒子💻 PC平台📥 电影下载📺 直播资源📱 手机平台💻 PC平台📺 电视盒子⚓️ 相关链接 ⚓️�…

秋招力扣刷题——数据流的中位数

一、题目要求 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFinder() 初始化 …

ISS检测原理

ISS(Intrinsic Shape Signatures)是由Yu Zhong于2009年提出的一种三维形状描述子,用于描述局部或半局部区域的点云,局部区域可以理解为以一个点云中某点为球心,以一定半径构成的可以包含多个内点的球形区域,半局部则是半个球形区域。ISS可用于不同视角点云的配准、快速姿…

大数据面试题之Spark(4)

目录 RDD的容错 Executor内存分配? Spark的batchsize&#xff0c;怎么解决小文件合并问题? Spark参数(性能)调优 介绍一下Spark怎么基于内存计算的 说下什么是RDD(对RDD的理解)?RDD有哪些特点?说下知道的RDD算子 RDD底层原理 RDD属性 RDD的缓存级别? Spark广播变…

MongoDB笔记02

MongoDB中的数据具有灵活的模式&#xff0c;文档在同一集合&#xff0c;但他们不需要具有相同的字段或结构集合&#xff0c;集合文档中的公共字段可以包含不同类型的数据 MongoDB中的数据具有灵活的模式&#xff0c;与sql数据库不同&#xff0c;sql数据库必须在插入数据之前确…

Nuxt3 的生命周期和钩子函数(六)

title: Nuxt3 的生命周期和钩子函数&#xff08;六&#xff09; date: 2024/6/30 updated: 2024/6/30 author: cmdragon excerpt: 摘要&#xff1a;本文深入解析了Nuxt3框架中的多个核心生命周期钩子和组件注册功能&#xff0c;包括imports:sources、imports:extend、import…

刷代码随想录有感(121):贪心算法——买卖股票的最佳时机III

题干&#xff1a; 代码&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {if (prices.size() < 2) return 0;int buy1 prices[0];int buy2 prices[0];int sell1 0, sell2 0;for (int i 1; i < prices.size(); i) {buy1 min(bu…

LLVM 中的指令调度器及其工作过程

LLVM 中的指令调度器及其工作过程 概述 LLVM 中实现了多种指令调度器&#xff0c;分别作用于后端流程的不同阶段&#xff0c;包括指令选择阶段的指令调度器、寄存器分配前的指令调度器和寄存器分配后的指令调度器 这三类调度器都有llc命令行选项可以控制其使能或禁用 在寄存…

解密Eureka UNKNOWN状态:服务注册的隐形守护者

&#x1f310; 解密Eureka UNKNOWN状态&#xff1a;服务注册的隐形守护者 在微服务架构中&#xff0c;Eureka作为Netflix开源的服务发现框架&#xff0c;扮演着服务注册与发现的核心角色。然而&#xff0c;在Eureka的Dashboard上&#xff0c;我们有时会遇到服务状态显示为UNKN…

dsp入门

安装环境 安装 ccs5.5安装 BIOS-MCSDK 多核软件开发包安装 仿真器驱动 工程创建与导入工程 创建工程 创建工程填信息添加.cmd文件&#xff0c;配置内存编译 导入工程 导入 配置工程 选择properties 环境变量 头文件 库文件 仿真器 添加仿真器 先调出仿真器界面创建仿…

rtthread stm32h743的使用(十二)spi设备fal驱动的使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验&#xff0c;核心板如图&#xff1a; fal驱动的使用是建立在sfud驱动之上的&#xff0c;所以我们在上一节使用的工程基础上继续实验。 1.在上一节工程的基础…