日韩性视频-久久久蜜桃-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 忠诚】线段树的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久少妇网 | 男女日日 | 这里只有精品免费视频 | 中文字幕丰满乱子伦无码专区 | 久久久999国产 | 大乳女喂男人吃奶视频 | 青青草精品视频 | 欧美日韩精| 国偷自产视频一区二区久 | 欧美日韩在线免费播放 | 日韩一级黄色 | 日本午夜视频在线观看 | 91精品免费视频 | 美色视频| 男生舔女生的屁股 | 免费成人在线播放 | 女人洗澡一级特黄毛片 | 欧美劲爆第一页 | 一区二区久久精品66国产精品 | 看久久 | 2023av在线 | 久久精品色妇熟妇丰满人妻 | 三级视频网站在线观看 | 一级免费在线观看 | 亚洲com| 男人天堂你懂的 | 91最新国产| 亚洲人午夜精品 | 噜噜噜久久 | 国产91一区二区三区 | 国产又粗又长又大 | 粉嫩av蜜桃av蜜臀av | 国产福利精品在线观看 | 精品熟妇视频一区二区三区 | 毛毛毛片 | 欧美性受xxxx黒人xyx性爽 | 青青青操| jvid乐乐 | 日韩精品久久一区 | 久射久| 欧美日韩国产中文字幕 | 深夜福利免费视频 | 国产91色 | 国产婷婷色综合av蜜臀av | 日日操网站 | 日韩欧美啪啪 | 国产精品视频在线免费观看 | 午夜视频黄色 | 99久久久国产精品无码免费 | 一区二区三区不卡视频在线观看 | 日日日人人人 | 国产精品欧美大片 | 伊人7 | 超碰男人的天堂 | av在线麻豆| 免费精品视频一区二区三区 | 国产一区二区视频在线观看 | 在线观看天堂av | 国产精品福利小视频 | 国产精品成人一区二区三区 | 亚洲天堂自拍 | 亚欧乱色 | 麻豆av电影在线 | 亚洲精品一区二区二区 | 天天尻逼 | 久久久久人妻一区精品 | 精品国产成人 | 国产欧美不卡 | 亚洲视频在线视频 | 天堂…中文在线最新版在线 | 中文字幕国产 | 亚洲精品四区 | 天天操天天干天天 | 蜜桃无码一区二区三区 | 欧美一区精品 | 国产精品99久久久久久久久久久久 | 亚洲性色视频 | 欧美激情喷水 | 亚洲a网站 | 日韩三级精品 | 日本少妇一区二区 | 一级aaaa毛片 | 天堂av免费| 激情啪啪网| 日p视频在线观看 | 亚洲国产一区二区三区在线观看 | 黑人精品无码一区二区三区AV | 欧美日韩中文字幕在线播放 | 69精品久久久 | 国产精品理论片 | 欧美涩涩涩 | 一区二视频 | 国产熟女一区二区丰满 | 久久久亚洲天堂 | 91性视频 | 玖操| 各处沟厕大尺度偷拍女厕嘘嘘 | 在线欧美亚洲 | 乱岳|