第八大奇跡

目錄

題目描述

輸入描述

輸出描述

輸入輸出樣例

示例

輸入

輸出

運行限制

原題鏈接

代碼思路


題目描述

在一條 R 河流域,繁衍著一個古老的名族 Z。他們世代沿河而居,也在河邊發展出了璀璨的文明。

Z 族在 R 河沿岸修建了很多建筑,最近,他們熱衷攀比起來。他們總是在比誰的建筑建得最奇特。

幸好 Z 族人對奇特的理解都差不多,他們很快給每棟建筑都打了分,這樣評選誰最奇特就輕而易舉了。

于是,根據分值,大家很快評出了最奇特的建筑,稱為大奇跡。

后來他們又陸續評選了第二奇特、第二奇特、......、第七奇特的建筑,依次稱為第二大奇跡、第三大奇跡、......、第七大奇跡。

最近,他們開始評選第八奇特的建筑,準備命名為第八大奇跡。

在評選中,他們遇到了一些問題。

首先,Z 族一直在發展,有的建筑被拆除又建了新的建筑,新建筑的奇特值和原建筑不一樣,這使得評選不那么容易了。

其次,Z 族的每個人所生活的范圍可能不一樣,他們見過的建筑并不是所有的建筑,他們堅持他們自己所看到的第八奇特的建筑就是第八大奇跡。

Z 族首領最近很頭疼這個問題,他害怕因為意見不一致導致 Z 族發生分歧。他找到你,他想先了解一下,民眾自己認為的奇跡是怎樣的。

現在告訴在 R 河周邊的建筑的變化情況,以及在變化過程中一些人的生活范圍,請編程求出每個人認為的第八大奇跡的奇特值是多少。

輸入描述

輸入的第一行包含兩個整數?𝐿,𝑁L,N,分別表示河流的長度和要你處理的信息的數量。開始時河流沿岸沒有建筑,或者說所有的奇特值為 0。

接下來?𝑁N?行,每行一條你要處理的信息。

如果信息為?𝐶?𝑝?𝑥C?p?x,表示流域中第?𝑝?(1≤𝑝≤𝐿)p?(1≤p≤L)?個位置建立了一個建筑,其奇特值為?𝑥x。如果這個位置原來有建筑,原來的建筑會被拆除。

如果信息為?𝑄?𝑎?𝑏Q?a?b,表示有個人生活的范圍是河流的第?𝑎a?到?𝑏b?個位置(包含?𝑎a?和?𝑏b,𝑎≤𝑏a≤b),這時你要算出這個區間的第八大奇跡的奇特值,并輸出。如果找不到第八大奇跡,輸出 0。

其中,1≤𝐿≤105,1≤𝑁≤1051≤L≤105,1≤N≤105。所有奇特值為 不超過?109109?的非負整數。

輸出描述

對于每個為 Q 的信息,你需要輸出一個整數,表示區間中第八大奇跡的奇特值。

輸入輸出樣例

示例

輸入
10 15
C 1 10
C 2 20
C 3 30
C 4 40
C 5 50
C 6 60
C 7 70
C 8 80
C 9 90
C 10 100
Q 1 2
Q 1 10
Q 1 8
C 10 1
Q 1 10
輸出
0
30
10
20

運行限制

  • 最大運行時間:1s
  • 最大運行內存: 256M

原題鏈接

第八大奇跡icon-default.png?t=N7T8https://www.lanqiao.cn/problems/242/learning/?page=1&first_category_id=1&name=%E7%AC%AC%E5%85%AB%E5%A4%A7%E5%A5%87%E8%BF%B9

代碼思路

import java.util.Scanner;public class Main {static Tree[] trees;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int L = scanner.nextInt();int N = scanner.nextInt();// 注意線段樹的長度要是存入長度(L)的四倍;trees = new Tree[L << 2];// 構建線段樹structure(1, 1, L);while (N-- > 0) {String temp1 = scanner.next();int temp2 = scanner.nextInt();int temp3 = scanner.nextInt();if (temp1.equals("C")) {renew(1, temp2, temp3);} else {System.out.println(query(1, temp2, temp3)[7]);}}}// 構建線段樹static void structure(int k, int left, int right) {trees[k] = new Tree(left, right);if (left == right) {return;}int mid = (left + right) >> 1;structure(k << 1, left, mid);structure(k << 1 | 1, mid + 1, right);}// 修改線段樹里的數組static int[] modify(int num1[], int num2[]) {int num3[] = new int[8];int a = 0;int b = 0;for (int i = 0; i < num3.length; i++) {// 從兩個子節點的數組中賦較大的值給父節點if (num1[a] > num2[b]) {num3[i] = num1[a++];} else {num3[i] = num2[b++];}}return num3;}// 更新線段樹static void renew(int k, int i, int value) {if (trees[k].left == trees[k].right) {trees[k].num[0] = value;return;}int mid = (trees[k].left + trees[k].right) >> 1;if (mid >= i) {renew(k << 1, i, value);} else {renew(k << 1 | 1, i, value);}// 更新父親節點的數組trees[k].num = modify(trees[k << 1].num, trees[k << 1 | 1].num);}// 查詢線段樹static int[] query(int k, int left, int right) {if (trees[k].left >= left && trees[k].right <= right) {return trees[k].num;}int mid = (trees[k].left + trees[k].right) >> 1;int num[] = new int[8];if (mid >= left) {num = modify(num, query(k << 1, left, right));}if (mid < right) {num = modify(num, query(k << 1 | 1, left, right));}return num;}}class Tree {int left;int right;// 每個節點存一個數組int num[] = new int[8];public Tree(int left, int right) {super();this.left = left;this.right = right;}}

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

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

相關文章

java如何向數組中插入元素

java的數組是不可改變的&#xff0c;因此如果要向數組中插入新的元素&#xff0c;需要新建一個數組&#xff0c;新的數組元素個數減去老數組元素個數的差大于等于要插入新的元素數量。 假如說要插入一個數組元素&#xff0c;需要把新元素插入到中間&#xff0c;把新的數組分為…

Vue組件通訊?組件中通過 provide 來提供變量,然后在?組件中通過 inject 來注?變量例子

在Vue中&#xff0c;provide 和 inject 主要用于依賴注入&#xff0c;允許祖先組件向其所有子孫組件提供一個依賴&#xff0c;而不論組件層次有多深。這在開發高階插件/組件庫時特別有用。 以下是一個簡單的例子&#xff0c;演示了如何在父組件中使用 provide 提供變量&#x…

軟件測試面試題(八)

一&#xff1a;TestDirector有哪些功能&#xff0c;如何對軟件測試過程進行管理&#xff1f; 需求管理 定義測試范圍 定義需求樹 描述需求樹的功能點 測試計劃 定義測試目標和測試策略 分解應用程序&#xff0c;建立測試計劃樹 確定每個功能點的測試方法 將每個功能點連接…

Ps 濾鏡:消失點

Ps菜單&#xff1a;濾鏡/消失點 Filter/Vanishing Point 快捷鍵&#xff1a;Ctrl Alt V 兩條平行的鐵軌或兩排樹木連線相交于很遠很遠的某一點&#xff0c;這點在透視圖中叫做“消失點”&#xff0c;也稱為“滅點”。 消失點 Vanishing Point濾鏡主要用于在圖像中處理具有透視…

C++入門3——類與對象(2)

1.類的6個默認成員函數 如果一個類中什么成員都沒有&#xff0c;簡稱為空類。可是空類中真的什么都沒有嗎&#xff1f; 其實并不是的&#xff0c;任何類在什么都不寫時&#xff0c;編譯器會自動生成以下6個默認成員函數。 默認成員函數&#xff1a;用戶沒有顯式實現&#xf…

libmodbus開發庫介紹

目錄 功能概要源碼獲取源碼內容結構源碼與移植 功能概要 libmodbus是一個免費的跨平臺支持RTU和TCP的Modbus庫&#xff0c;遵循LGPL V2.1協議。libmodbus支持Linux、Mac Os X、FreeBSD、QNX和Windows等操作系統。libmodbus可以向符合Modbus協議的設備發送和接收數據&#xff0…

vector的reverse和resize區別

一 代碼 #include "stdafx.h" #include <iostream> #include <vector> using namespace std;class TEST{ public:TEST(){std::cout << "construct t" << std::endl;} };int main() {std::cout << "hello,world" …

《Python偵探手冊:用正則表達式破譯文本密碼》

在這個信息爆炸的時代&#xff0c;每個人都需要一本偵探手冊。阿佑今天將帶你深入Python的正則表達式世界&#xff0c;教你如何像偵探一樣&#xff0c;用代碼破解文本中的每一個謎題。從基礎的字符匹配到復雜的數據清洗&#xff0c;每一個技巧都足以讓你在文本處理的領域中成為…

【一站式學會Kotlin】第十三節:kotlin語言中的解構

作者介紹: 百度資深Android工程師T6,在百度任職7年半。 目前:成立趙小灰代碼工作室,歡迎大家找我交流Android、微信小程序、鴻蒙項目。= 一:通俗易懂的人工智能教程:https://www.captainbed.cn/nefu/ 點一下,打開新世界的大門。 二:【一站式學會Kotlin】免費領取:作者…

SQLSyntaxErrorException: FUNCTION dbname.to_timestamp does not exist

由于MySQL數據庫高版本&#xff08;如8.x&#xff09;中有to_timestamp(&#xff09;函數&#xff0c;低版本中&#xff08;如5.7.x&#xff09;沒有這個函數&#xff0c;服務運行報錯。 自己創建函數實現功能&#xff0c;創建語句如下&#xff1b; DELIMITER // CREATE FUN…

如何使用ChatGPT撰寫短視頻爆款文案

在這個快速發展的數字時代&#xff0c;短視頻已經成為最受歡迎的娛樂和信息獲取方式之一。對于內容創作者來說&#xff0c;如何制作出爆款短視頻&#xff0c;吸引更多觀眾的注意力&#xff0c;是他們面臨的一大挑戰。文案&#xff0c;作為視頻內容的靈魂&#xff0c;起著至關重…

ESP32 - Micropython ESP-IDF 雙線教程 中斷和定時器 (1)

ESP32 - Micropython ESP-IDF 雙線教程 中斷和定時器 ESP32中斷ESP32定時器歸納ESP32 - Micropython 定時器示例代碼代碼介紹 ESP32 - IDF 定時器示例代碼代碼解釋ESP32-IDF定時器使用介紹 ESP32中的中斷和定時器是兩種重要的硬件特性&#xff0c;它們在嵌入式系統開發中扮演著…

系統思考—戰略沙盤推演咨詢服務

今日與JSTO團隊一起學習了《戰略沙盤推演咨詢服務》。通過沙盤體驗&#xff0c;我深刻感受到組織與戰略就像一張皮的正反兩面。在轉型過程中&#xff0c;即使戰略非常明確&#xff0c;團隊成員由于恐懼和顧慮&#xff0c;往往不愿意挑戰新的業務&#xff0c;從而難以實現戰略目…

VasDolly圖形工具-Android多渠道打包福利

簡介 基于騰訊VasDolly最新版本3.0.6的圖形界面衍生版本&#xff0c;旨在更好的幫助開發者構建多渠道包 使用 下載并解壓工具包&#xff0c;找到Startup腳本并雙擊啟動圖形界面&#xff08;注意&#xff1a;本地需安裝java環境&#xff09; 渠道格式說明 txt文件&#xff…

音頻鏈接抓取技術在Lua中的實現

前言 隨著數字音樂的普及&#xff0c;越來越多的用戶選擇在線音樂平臺來享受音樂。網易云音樂作為國內領先的音樂服務平臺&#xff0c;不僅提供了豐富的音樂資源&#xff0c;還擁有獨特的社交屬性&#xff0c;吸引了大量的用戶。在眾多的音樂服務中&#xff0c;音頻鏈接的抓取…

Qt | QTabBar 類(選項卡欄)

01、上節回顧 Qt | QStackedLayout 類(分組布局或棧布局)、QStackedWidget02、簡介 1、QTabBar類直接繼承自 QWidget。該類提供了一個選項卡欄,該類僅提供了一個選項卡, 并沒有為每個選項卡提供相應的頁面,因此要使選項卡欄實際可用,需要自行為每個選項卡設置需要顯示的頁…

【面試題】JavaScript基礎高頻面試(上)

1、簡述JavaScript中map和foreach的區別&#xff1f; map和forEach都是JavaScript數組的迭代方法&#xff0c;但它們之間存在一些關鍵區別。 1. 返回值&#xff1a;map方法會返回一個新的數組&#xff0c;這個新數組是由原數組通過某個函數處理后的結果組成的。而forEach方法…

Ubuntu18.04 重裝/升級 eigen 教程

目錄 一、Eigen 1.1 ubuntu 查看 eigen 版本 1.2 卸載 老版本 eigen 二、安裝 eigen 3.4.0 2.1 配置安裝 2.2 查看版本 一、Eigen 1.1 ubuntu 查看 eigen 版本 $ dpkg -l | grep eigen1.2 卸載 老版本 eigen sudo updatedb locate eigen3會獲得一堆輸出&#xff0c;其…

springboot整合Kafka的快速使用教程

目錄 一、引入Kafka的依賴 二、配置Kafka 三、創建主題 1、自動創建(不推薦) 2、手動動創建 四、生產者代碼 五、消費者代碼 六、常用的KafKa的命令 Kafka是一個高性能、分布式的消息發布-訂閱系統&#xff0c;被廣泛應用于大數據處理、實時日志分析等場景。Spring B…

山東大學軟件學院項目實訓-創新實訓-基于大模型的旅游平臺(二十一)- 微服務(1)

微服務 1.認識微服務 SpringCloud底層是依賴于SpringBoot的&#xff0c;并且有版本的兼容關系&#xff0c;如下&#xff1a; 2. 服務拆分 需求 &#xff1a; 把訂單信息和用戶信息一起返回 從訂單模塊向用戶模塊發起遠程調用 &#xff0c; 把查到的結果一起返回 步驟 &…