秋招突擊——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.pswp.cn/web/37102.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37102.shtml
英文地址,請注明出處:http://en.pswp.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.在上一節工程的基礎…