算法提高之最大數

算法提高之最大數

  • 核心思想:線段樹

    • 添加數
      • 看作原本的數組有數(0) 現在將他修改成另一個值
    • 詢問后l個數的最大值
    • query函數具體實現
  •   #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 200010;typedef long long LL;int m,p;struct edge{int l,r;int v;  //最大值}tr[N*4];void pushup(int u){//兩子樹的最大值的最大值tr[u].v = max(tr[u<<1].v,tr[u<<1 | 1].v);}void build(int u,int l,int r){tr[u] = {l,r};if(l == r) return; //如果是葉子節點int mid = l + r >> 1;build(u<<1,l,mid) , build(u<<1|1,mid+1,r);}int query(int u,int l,int r){//如果子樹節點被區間全覆蓋 說明子樹節點足夠小if(tr[u].l >= l && tr[u].r <= r) return tr[u].v;//子樹節點不夠小 需要細分int mid = tr[u].l + tr[u].r >> 1;int v=0;//如果l在左側 取左子樹if(l<=mid) v = query(u<<1,l,r);if(r>mid) v = max(v,query(u<<1|1,l,r));return v;}void modify(int u,int x,int v){//找到x的位置if(tr[u].l == x && tr[u].r == x) tr[u].v = v;else{int mid = tr[u].l + tr[u].r >> 1;//如果x較小 取左子樹if(x <= mid) modify(u<<1,x,v);else modify(u<<1|1,x,v);//更新修改完后 要向上返回更新父節點值pushup(u);}}int main(){cin>>m>>p;int n=0,last=0;build(1,1,m);while(m--){char op[2];int t;cin>>op>>t;if(op[0] == 'A'){//改最后的數modify(1,n+1,((LL)last + t) % p);n ++;}else{//尋味n-t+1 - n這t個數的最大值last = query(1,n-t+1,n);cout<<last<<endl;}}}
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15403.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15403.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15403.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python爬蟲登錄到海康相機管理頁面

簡述 1.最近接到個任務是在管理頁面更改相機的某個參數&#xff0c;下載官方的sdk貌似沒有提供這個接口&#xff0c;所以只能自己寫爬蟲登錄發請求了。 1.主要步驟 1.1 發送get請求獲取到salt&#xff0c;sessionID&#xff0c;challenge等信息 http://admin:123456192.168.…

交叉熵損失函數計算過程(tensorflow)

交叉熵損失函數通常用于多類分類損失函數計算。計算公式如下&#xff1a; P為真實值&#xff0c;Q為預測值。 使用tensorflow計算 import tensorflow as tf import keras# 創建一個示例數據集 # 假設有3個樣本&#xff0c;每個樣本有4個特征&#xff0c;共2個類別 # 目標標簽…

Spark Client 配置

前言 記錄Spark Client 配置,這里的 Spark Client 和 HDFS、YARN 不在一個節點,只是一個單節點的 Spark Client,需要能連接其他節點的大數據集群的 Hive 和 能提交到Yarn 。 環境信息 大數據節點(已配置好Spark): 192.168.44.154 192.168.44.155 192.168.44.156 客戶端…

P2P 技術:點對點網絡的興起

目錄 概述 P2P 的興起 P2P 的定義和特征 定義 特征 P2P 的發展 早期發展 快速成長 成熟應用 P2P 的關鍵技術 P2P 的應用 總結 概述 P2P&#xff08;Peer-to-Peer&#xff09;&#xff0c;即點對點網絡&#xff0c;是一種去中心化的網絡架構&#xff0c;它允許網絡中…

2024最新私有化部署AI大模型,讓每個人都有屬于自己的AI助理

讓每個人都擁有一個屬于自己的本地大模型 下載Ollama 下載地址 ? https://ollama.com/download ? Ollama支持MacOS、Linux、Windows 解壓 下載完成后&#xff0c;會得到一個Ollama-darwin.zip文件&#xff0c;解壓后&#xff0c;以Mac為例是一個可運行文件&#xff1a;O…

Jupyter 使用手冊: 探索交互式計算的無限可能

什么是 Jupyter? Jupyter 是一個開源的 Web 應用程序,可用于創建和共享包含實時代碼、可視化和敘述性文本的文檔。它最初是作為 IPython 項目的一部分開發的,后來發展成為支持多種編程語言的交互式計算環境。 應用場景 作為一個開源的交互式計算環境,Jupyter 在以下幾個領域…

AI應用案例:服務器智能分析管理系統

服務器硬件配置、性能狀態、所運行的應用系統等信息分散于多個不同的信息管理系統。人為查詢判斷現有的服務器資源是否滿足用戶需求&#xff0c;且需結合資產管理系統與Maximo基礎資源、性能監控、運維管理等各個系統互不關聯&#xff0c;數據分散不能為運維管理提供完整一致的…

在Spring 當中存在的八大模式

在Spring 當中存在的八大模式 文章目錄 在Spring 當中存在的八大模式每博一文案1. 簡單工廠模式2. 工廠方法模式3. 單例模式4. 代理模式5. 裝飾器模式6. 觀察者模式7. 策略模式8. 模板方法模式最后&#xff1a; 每博一文案 我認為 “知世故而不世故” 才是真正意義上的成熟。回…

Micrometer中0.5 0.9 0.99三個百分位數詳解

Micrometer的Timer類中的publishPercentiles方法使用0.5, 0.95, 0.99這三個百分位數&#xff0c;是因為它們在性能監控和SLA&#xff08;Service Level Agreement&#xff0c;服務等級協議&#xff09;指標測量中具有特定的意義和普遍應用。 在系統性能監控領域&#xff0c;這…

【PPT密碼】PPT文件的兩種不可編輯情況

不知道大家有沒有遇到過&#xff0c;PPT文件無法編輯的情況&#xff0c;今天小編分享兩種ppt文件不可編輯的原因以及解決方法。 情況一 如果打開ppt文件之后&#xff0c;發現幻燈片某些地方或者每張幻燈片同一個地方&#xff0c;無法編輯&#xff0c;這可能是因為PPT中設置了…

Scala學習筆記6: 類

目錄 第六章 類1- 簡單類和無參方法2- 帶有getter和setter的屬性3- 只帶getter的屬性4- 對象私有化5- 輔助構造器6- 主構造器7- 嵌套類end 第六章 類 在Scala中, 類用于創建對象的藍圖; 類可以包含方法、值、變量、類型、對象和特質等成員; 類名應該以大寫字母開頭, 可以包含…

ISCC 2024 部分wp

文章目錄 一、Misc1、Number_is_the_key2、FunZip3、擂臺—— 重“隱”&#xff1b;4、RSA_KU5、時間刺客6、成語學習7、 精裝四合一8、鋼鐵俠在解密9、有人讓我給你帶個話10、Magic_Keyboard11、工業互聯網模擬仿真數據分析 二、Web1、還沒想好名字的塔防游戲2、代碼審計3、原…

又一個換臉工具-swapface

網址 https://www.swapface.org/ 看官網支持windows和mac m1,我下載了但是我沒安裝&#xff0c;因為我的硬盤真的遭不住了。 可以去別的地方搜搜介紹&#xff0c;聽說使用挺簡單的。 但是我感覺還是rope比較好&#xff0c;其實rope已經很快了&#xff0c;就是沒有gpu有點坑…

Python數據分析實驗四:數據分析綜合應用開發

目錄 一、實驗目的與要求二、主要實驗過程1、加載數據集2、數據預處理3、劃分數據集4、創建模型估計器5、模型擬合6、模型性能評估 三、主要程序清單和運行結果四、實驗體會 一、實驗目的與要求 1、目的&#xff1a; 綜合運用所學知識&#xff0c;選取有實際背景的應用問題進行…

【Python】【Scrapy 爬蟲】理解HTML和XPath

為了從網頁中抽取信息&#xff0c;必須對其結構有更多了解。我們快速瀏覽HTML、HTML的樹狀表示&#xff0c;以及在網頁上選取信息的一種方式XPath。 HTML、DOM樹表示以及XPath 互聯網是如何工作的&#xff1f; 當兩臺電腦需要通信的時候&#xff0c;你必須要連接他們&#xff…

Android Studio實現MQTT協議的連接

1添加依賴 在項目中找到下圖文件 打開文件 如下 plugins {alias(libs.plugins.android.application) }android {namespace "com.example.mqtt_04"compileSdk 34defaultConfig {applicationId "com.example.mqtt_04"minSdk 27targetSdk 34versionCo…

樹的層序遍歷,平衡二叉樹,以及反轉二叉樹

一、樹的層序遍歷 層序遍歷的實現&#xff1a; 1.依賴于隊列的數據結構 2.核心怎么實現&#xff1a; 1&#xff09;創建一個隊列的容器對象。 2&#xff09;判斷根節點是否為空&#xff0c;不為空則添加根節點到隊列中。 3&#xff09;遍歷是一個循環性的工作&#xff0c;寫…

小紅書無限加群腳本無需ROOT【使用簡單無教程】

小紅書無限加群腳本無需ROOT&#xff0c;包含了對應的小紅書版本【使用簡單無教程】 鏈接&#xff1a;https://pan.baidu.com/s/1HkLhahmHDFMKvqCC3Q3haA?pwd6hzf 提取碼&#xff1a;6hzf

【Vue】computed 和 methods 的區別

概述 在使用時&#xff0c;computed 當做屬性使用&#xff0c;而 methods 則當做方法調用computed 可以具有 getter 和 setter&#xff0c;因此可以賦值&#xff0c;而 methods 不行computed 無法接收多個參數&#xff0c;而 methods 可以computed 具有緩存&#xff0c;而 met…

Stable Diffusion教程:從入門到精通

Stable Diffusion是一種基于深度學習的圖像生成技術&#xff0c;能夠生成高質量的圖像&#xff0c;廣泛應用于藝術創作、廣告設計和游戲開發等領域。本教程將詳細介紹Stable Diffusion的基礎知識、安裝和配置方法&#xff0c;以及如何使用它進行圖像生成。 1. 什么是Stable Di…