CODEVS 2018 反病毒軟體

2021-08-20 02:53:32 字數 2288 閱讀 6637

題目描述

第一行為兩個整數n,

q,以空格隔開。

接下來q

行,每行代表乙個事件。第

i+1行代表第

i個事件,這一行有三個整數ci

,xi,

yi,其中ci為

1或2。如果ci

為1,表示在城市xi

又新發現了yi

個病例;如果ci

為2,表示詢問從xi

到yi,病例最多的城市與病例第二多的城市的病例數之差為多少。

輸出描述

對於輸入中的每乙個

ci=2

的事件,輸出一行,即詢問的結果。

樣例輸入

42 1 4

1 2 3

2 2 4

1 3 2

2 1 3

1 2 2

2 1 4

樣例輸出03

13資料範圍及提示

【樣例說明】

初始時各個城市的病例數為。從

1到4最多的病例數為

0,第二多的病例數為

0,差值為

0,輸出0。

城市2發現了3

個新病例,病例數變為。從

2到4最多的病例數為

3,第二多的病例數為

0,差值為

3,輸出3。

城市3發現了2

個新病例,病例數變為。從

1到3最多的病例數為

3,第二多的病例數為

2,差值為

1,輸出1。

城市2發現了2

個新病例,病例數變為。從

1到4最多的病例數為

5,第二多的病例數為

2,差值為

3,輸出3。

【資料規模與約定】

對於40%

的資料,n,

q≤1000。對於

100%

的資料,2≤

n,q≤

100000

,且對於每乙個

ci=2

,滿足xi<

yi。題解:這道是線段樹求最大值的小變形。要求區間內的最大值和第二大值。我們在修改時記錄最大值和第二大值時即可,查詢時將所大區間內的最大值和第二大值記錄一下即可。

#include #include int n,q,x,y,z,xx,t=0,maxn=0,maxn1=0;

char ch;

bool bo;

struct treetree[400005];

using namespace std;

inline int read()

while ((ch<'0')||(ch>'9')) ch=getchar();

while ((ch>='0')&&(ch<='9'))

return f*x;

}inline void build(int root,int l,int r)

build(root*2,l,(l+r)/2);

build(root*2+1,(l+r)/2+1,r);

}inline void change(int root,int x)

if (x<=(ll+rr)/2) change(root*2,x); else change(root*2+1,x);

tree[root].maxx=max(tree[root<<1].maxx,tree[root<<1|1].maxx);

if (tree[root*2].maxx>tree[root*2+1].maxx)

tree[root].sec=max(tree[root*2+1].maxx,tree[root*2].sec);

if (tree[root*2].maxxmaxn1) maxn1=tree[root].maxx;

if (tree[root].maxx>maxn)

if (tree[root].sec>maxn1) maxn1=tree[root].sec;

if (tree[root].sec>maxn)

return;

} if (l<=(ll+rr)/2) find(root*2,l,r);

if (r>(ll+rr)/2) find(root*2+1,l,r);

}int main()

} return 0;

}

HAOI2018 反色遊戲

小c和小g經常在一起研究搏弈論問題,有一天他們想到了這樣乙個遊戲 有乙個 n nn 個點 m mm 條邊的無向圖,初始時每個節點有乙個顏色,要麼是黑色,要麼是白色 現在他們對於每條邊做出一次抉擇 要麼將這條邊連線的兩個節點都反色 黑變白,白變黑 要麼不作處理 他們想把所有節點都變為白色,他們想知道在...

題解 HAOI2018 反色遊戲

題目傳送門 給出乙個 n 個點 m 條無向邊的圖,每個點都有乙個 in 0,1 的權值,每次可以選擇一條邊,然後將該邊相連兩點權值異或上 1 問有多少種選擇方法使得每個點的權值都變為 0 每條邊只能選擇一次 但是這個問題太簡單了,所以你要求刪掉每個點以及它連出的邊之後的答案。有 t 組資料,t le...

BZOJ5330 SDOI2018 反回文串

luogu bzoj 列舉乙個長度為 n 為回文串,它的所有迴圈位移都可以產生貢獻。但是這樣算重了。重複的地方在於可能多個回文串迴圈同構,或者可能有的回文串經過小於 n 次迴圈位移後能夠得到自身。乙個比較好的處理方式是 對每個回文串求最小的 x 使這個串經過 x 次迴圈位移後可以再次成為乙個回文串。...