NKOI 1317 校門外有很多樹

2021-07-14 18:13:53 字數 1547 閱讀 2550

校門外有很多樹

time limit:10000ms  memory limit:65536k

total submit:96 accepted:73 

case time limit:1000ms

description

校門外有很多樹,有蘋果樹,香蕉樹,有會扔石頭的,有可以吃掉補充體力的…… 

如今學校決定在某個時刻在某一段種上一種樹,保證任一時刻不會出現兩段相同種類的樹,現有兩個操作: 

k=1,讀入l,r表示在l~r之間種上的一種樹 

k=2,讀入l,r表示詢問l~r之間能見到多少種樹 (0

input

第一行n,m表示道路總長為n,共有m個操作 

接下來m行為m個操作 

output

對於每個k=2輸出乙個答案

sample input

5 4

1 1 3

2 2 5

1 2 4

2 3 5

sample output

1

2

hint

20%的資料保證,n,m<=100 

60%的資料保證,n <=1000,m<=50000 

100%的資料保證,n,m<=50000

source

vijos

tree[r].v=tree[tree[r].left].v+tree[tree[r].right].v-左右兒子重複的個數

因此加乙個引數ex記錄當前區間左右兒子重複的個數

如果塗的區間與討論的區間的左右兒子都相交,那麼tree[r].ex++

#include#includeusing namespace std;

const int maxn=50005;

int n,m,tot,a,b,k;

struct wktree[2*maxn];

inline void _read(int &x)

for(x=0;t>='0'&&t<='9';t=getchar())x=x*10+t-'0';

if(!sign)x=-x;

}void buildtree(int x,int y)

}void putdown(int r)

void add(int r)

if(tree[r].lazy)putdown(r);

int mid=(tree[r].a+tree[r].b)>>1;

if(a<=mid)add(tree[r].left);

if(b>mid)add(tree[r].right);

if(a<=mid&&b>mid)tree[r].ex++;

}int getnum(int r)

int main()

}

《構建之法》13 17

13章軟體測試.從基本名詞到軟體測試的分類方法,啃完這15頁書,至少對與軟體測試的理解程度不是停留在以前的層次 讓使用者使用,然後提出碰到什麼問題 測試不是那麼簡單就闡述的完全.測試按測試目的分類可分為 功能測試和非功能測試.按測試時機和作用又有 烽火台 和其他不同的測試方法.測試方法有很多,但是目...

NKOI 防守馬克

題目略 我最早其實想的貪心,力量從大到小,從下到上放置奶牛,但是如果有乙隻力量小的奶牛非常重,就矛盾。狀壓dp基礎題,但是開始我一直沒有想到運用列舉頂端的奶牛進行狀態轉移。我發現其實題目中物件增長的方式可以給狀態轉移帶來啟發,比如這裡的奶牛就是乙隻只疊上去的嘛。另外我還發現其實驗證dp是否可行就是看...

南陽 oj Mod 題目1317

時間限制 4000 ms 記憶體限制 65535 kb 難度 2 描述 mod是取餘運算,在程式中用符號 來表示。如3 7 3,7 5 2,0 4 0。ocean用巧妙的方法得到了乙個序列,該序列有 nn 個元素,我們用陣列 aa 來記錄 下標從 00 到 n 1ocean定義f i i a 0 a...