日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【洛谷P1816 忠诚】线段树

發布時間:2025/5/22 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【洛谷P1816 忠诚】线段树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

老管家是一個聰明能干的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由于管家聰明能干,因而管家總是讓財主十分滿意。但是由于一些人的挑撥,財主還是對管家產生了懷疑。于是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3…編號,然后不定時的問管家問題,問題是這樣的:在a到b號賬中最少的一筆是多少?為了讓管家沒時間作假他總是一次問多個問題。

分析

關于線段樹的詳細講解可以參考拙作(點擊傳送門):【算法微解讀】淺談線段樹
那么我們就開始講解一下這一道模板題,題目的主要意思就是區間查詢最小值。
首先定義線段樹的節點的狀態segment_tree_node

struct segment_tree_node{//線段樹節點狀態int Min;//表示當前區間的最小值 }tree[maxn];

接下來就是建樹build的過程了。

void build(int l,int r,int nod) {//建樹if (l==r) {//如果l與r指針相撞,那么就是已經到了目標區間,賦值tree[nod].Min=a[l];return;}int mid=(l+r)>>1;//取中間midbuild(l,mid,lson); build(mid+1,r,rson);//lson和rson可以恒定義一下,縮短代碼pushup(nod);//更新父節點 }

建樹好之后,我們要進行一下區間查詢的操作,區間查詢的本質其實就是將原區間分成兩部分,然后對每一個區間的目標區間進行查詢。
|----l----|----r----|當做是原區間

  • 情況一:[ll,rr]區間在l區間內,那么就是query(l,mid,ll,rr,lson)意思就是在[l,mid]區間內查詢[ll,rr]
  • 情況二:[ll,rr]區間在r區間內,那么就是query(mid+1,r,ll,rr,lson)意思就是在[mid+1,r]區間內查詢[ll,rr]
  • 情況三:[ll,rr]區間一部分在l區間內,一部分在r區間內,那么就要把原區間和目標區間都分成兩部分,因為線段樹中同一深度的區間互不干擾,那么我們就查詢query(l,mid,ll,mid,lson),query(mid+1,r,mid+1,rr,rson)

    注:區間查詢一般是不需要pushup的,但是如果之前是有區間修改,那么是要pushdown的。
    那么我們通過代碼來詳細的看一下區間查詢最小值是如何寫的。

int query(int l,int r,int ll,int rr,int nod) {//區間查詢最小值if (l==ll&&r==rr) return tree[nod].Min;//已經找到了目標區間int mid=(l+r)>>1;//取中間if (rr<=mid) return query(l,mid,ll,rr,lson);//整個區間在mid的左邊else if (ll>mid) return query(mid+1,r,ll,rr,rson);//整個區間在mid的右邊else return min(query(l,mid,ll,mid,lson),query(mid+1,r,mid+1,rr,rson));//區間被mid分成兩部分 }

主程序就不寫了,也是很簡單的

恒定義:define lson nod<<1 define rson (nod<<1)+1

完整代碼

#include <bits/stdc++.h> #define lson nod<<1 #define rson (nod<<1)+1 #define ms(a,b) memset(a,b,sizeof(a)) using namespace std; const int maxn=100000<<2; const int inf=1<<30; struct segment_tree_node{//線段樹節點狀態int Min; }tree[maxn]; int n,m; int a[maxn>>2]; inline int read() {int x=0,w=0; char ch=0;while (!isdigit(ch)) {w|=ch=='-';ch=getchar();}while (isdigit(ch)) {x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return w?-x:x; } void pushup(int nod) {//pushup操作,更新父節點內的信息tree[nod].Min=min(tree[lson].Min,tree[rson].Min); } void build(int l,int r,int nod) {//建樹if (l==r) {//如果l與r指針相撞,那么就是已經到了目標區間,賦值tree[nod].Min=a[l];return;}int mid=(l+r)>>1;//取中間midbuild(l,mid,lson); build(mid+1,r,rson);//lson和rson可以恒定義一下,縮短代碼pushup(nod);//更新父節點 } int query(int l,int r,int ll,int rr,int nod) {//區間查詢最小值if (l==ll&&r==rr) return tree[nod].Min;//已經找到了目標區間int mid=(l+r)>>1;//取中間if (rr<=mid) return query(l,mid,ll,rr,lson);//整個區間在mid的左邊else if (ll>mid) return query(mid+1,r,ll,rr,rson);//整個區間在mid的右邊else return min(query(l,mid,ll,mid,lson),query(mid+1,r,mid+1,rr,rson));//區間被mid分成兩部分 } int main() {ms(tree,inf);//先將樹的每一個節點都賦值成inf,因為我們要求最小值n=read(),m=read();for (int i=1;i<=n;i++) a[i]=read();build(1,n,1);while (m--) {int x=read(),y=read();printf("%d ",query(1,n,x,y,1));}return 0; }

轉載于:https://www.cnblogs.com/Dawn-Star/p/9782076.html

總結

以上是生活随笔為你收集整理的【洛谷P1816 忠诚】线段树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: free国产hd露脸性开放 | 肥老熟妇伦子伦456视频 | 免费激情小视频 | 午夜视频黄色 | 朝桐光av一区二区三区 | 性色欲情网站iwww九文堂 | 国产精品福利电影 | 中文在线最新版天堂 | 欧美日韩国产一级片 | 青娱乐伊人 | 麻豆精品免费视频 | xxxx日韩| 一区二区三区视频免费观看 | av黄色在线播放 | 毛片内射久久久一区 | 筱田优av| www欧美日韩 | 麻豆成人精品国产免费 | 日本在线视频观看 | 免费的性爱视频 | 久久久久久黄 | 熟女高潮一区二区三区视频 | 日日夜夜网站 | 国产中文一区二区三区 | 中文字幕免费一区 | 国产你懂 | 一道本在线视频 | 福利在线免费观看 | 亚洲区小说区 | 色片网站在线观看 | 成人无码av片在线观看 | 精品国产一区二区三区久久久蜜臀 | 国产精品欧美在线 | 11孩岁女毛片 | www黄色在线观看 | 日韩精品在线观看一区二区 | 国产精品久久久久久久裸模 | 一区在线免费观看 | 大陆日韩欧美 | 国产女同在线观看 | 国产一区亚洲二区 | 黄色录像a | 色五丁香| 少妇做爰免费视频播放 | 婷婷天堂 | 黄色应用在线观看 | 亚洲天堂91 | 熟妇人妻va精品中文字幕 | 最近中文字幕在线观看 | www免费视频 | 波多野结衣在线网址 | 欧美最顶级a∨艳星 | 美女考逼| 涩涩资源网 | 国产免费久久久 | 丰满少妇高潮久久三区 | 精品久久无码视频 | av免费毛片 | 午夜成人亚洲理伦片在线观看 | 午夜a区| 老色批永久免费网站www | 国产东北女人做受av | 日日色综合 | 成人免费视频观看 | 国产黄色91| 91日本精品| a激情 | 牛牛免费视频 | 六月丁香婷婷综合 | 青青草视频网站 | 高清国产一区 | 三级全黄做爰龚玥菲在线 | 女生的胸无遮挡 | 色哟哟一区二区 | 韩国黄色视屏 | 艹久久 | 亚洲第一页视频 | 国产一区二区自拍视频 | 天堂新版8中文在线8 | 亚洲色图第三页 | 成人精品一区二区三区四区 | 欧美在线导航 | 中文字幕人妻一区二区 | 欧美在线视频免费观看 | 欧美小视频在线 | 久久一区二区电影 | 非洲黑寡妇性猛交视频 | 人妻视频一区二区三区 | 综合激情亚洲 | 日日干日日射 | 黑人性视频 | 欧美私人情侣网站 | 欧美成人激情视频 | 欧美性爱精品一区 | 欧美一区二区福利 | 国产成人无码精品久久久性色 | 黄色一级图片 | 成人深夜福利视频 | 91精品国产色综合久久不卡98 |