題目連線
題意:
一條長為n的銅鍊子,每個結點的價值為1。有兩種修改,l,r,z;
z=2:表示把[l,r]區間內鍊子改為銀質,價值為2.
z=3:表示把[l,r]區間內鍊子改為金質,價值為3.
線段樹,區間重設,求和。
#include
#include
using
namespace
std;
const
int maxn=100000+10;
struct node
;node tree[maxn*4];
void maketree(int i,int l,int r)
void update(int i,int l,int r,int v)
if(tree[i].v!=-1)//修改區間不一致,並且為純色則,向下延伸
int mid=(tree[i].l+tree[i].r)>>1;
if(l>=mid+1)
update(i<<1|1, l, r, v);
else
if(r<=mid)
update(i<<1, l, r, v);
else
}int sum(int i)
int main ()
printf("case %d: the total value of the hook is %d.\n",k++,sum(1));
}return
0;}
HDU 1698 線段樹區間修改
一道線段樹區間替換的模板題 練習一下notonlysuccess的線段樹模板 注意注意!這兩個運算符號的優先順序非常低,只要寫到就要加括號,調了兩個小時的血淚啊 include include define lson l,m,rt 1 define rson m 1,r,rt 1 1 define ...
HDU 1698 線段樹區間更新
之前一直覺得自己線段樹敲得很熟練,然後。某天。是的,就是我的資料結構周開始的時候我發現。我特麼才會單點更新是怎麼回事!只會區間查詢是腫麼回事!摔!恩。就是表達一下弱渣的心情。區間更新,用到延遲操作。延遲操作應該是這麼回事。線段樹的優越性就是體現在,第一是二分查詢,第二是區間操作。當我們需要多次對區間...
hdu 1698 線段樹區間修改
題目鏈結 解題報告 區間修改的模板題目。需要打乙個set標記,表示區間 l,r 被修改為v.在這道題目裡。一開始所有結點被賦值為1,之後給q個修改,把 l,r 修改為1,2,或3.最後求區間和。我的寫法採用了劉汝佳在訓練指南中使用的寫法。參考 include include include incl...