牛客小白月賽22 貨物種類 題解(差分)

2021-10-23 04:55:49 字數 640 閱讀 8847

前言

看到題目沒什麼思路,以為是線段樹,但是明顯會t,這題算是第一次用差分做題吧

正文

每次選擇一段區間放入物品,問所有操作完成後物品種類最多的位置是幾。區間操作,只有在最後有一次詢問所以很顯然可以用差分進行求解差分對於每個位置維護乙個陣列,最後統計更新答案。當然,也可以用某些資料結構來解。

**講解

在區間內實現加減,我們可以使用差分陣列。還要注意的一點:不是存放貨物數目最多,而是存放貨物種類最多,為了防止重疊區間重複計算答案,我們可以先將區間讀下來,排個序(先按編號從小到大,編號相同按起始位置從小到大),把同一種類的重疊區間合併起來,避免多算。

#include#includeusing namespace std;

const int maxn=1e5+5;

int n,m,cf[maxn],sum,ans,mx=-1;

struct nodee[maxn];

bool cmp(node a,node b)

} printf("%d\n",ans);

return 0;

}

參考文章

牛客小白月賽22 貨物種類

作為無腦型選手,上來看到這種區間題,不考慮複雜度 因為不會算qaq 直接上來搓一發線段樹,那結果超時是必然的 後面才想到有個差分序列 所以stl套一套 差分序列,求字首和,就可以了 include using namespace std unordered map int,unordered map...

牛客小白月賽22題解

a 操作序列 單點增加,區間求和,下標最小的非零數變成零,單點查詢。說完了不就線段樹嘛。由於範圍比較大,先存下來,離散化,再進行樹上的操作。注意這裡的左右區間離散化值不一樣的,左邊離散化要找到大於等於左邊界的值,右邊離散化要找到小於等於右邊界的值。b 樹上子鏈 類似於 dp 求樹直徑 c 交換遊戲 ...

牛客小白月賽22 題解

題解鏈結 題目知識點 題目難度 a 操作序列 stl,map,set,模擬 普及 提高 b 樹上子鏈 樹形dp,樹的直徑 普及 提高 c 交換遊戲 記憶化搜尋,狀態壓縮 普及 提高 d 收集紙片 全排列,dfs,狀壓dp,tsp問題 普及 提高 e 方塊塗色 簡單數論,容斥原理 入門f 累乘數字 找...