CF2002E Cosmic Rays \(\star\)
順著詢問想增加二元組 \((a,b)\) 的影響。只需要考慮它的合併情況,即尾部什麼時候會出現數字 \(b\),而總時間可以看作是最後一個尾部的存在時間,所以我們只需要關心尾部
用棧維護尾部的數值和存在時間(不難發現這是一個單調棧)
vector<pair<LL,int>> s;
For(i,1,n) {
LL a, mx = 0; int b; cin>>a>>b;
while( sz(s) && (a >= s.back().fi || b == s.back().se) ) {
if( b == s.back().se ) a += s.back().fi - mx;
else mx = s.back().fi;
s.pop_back();
}
s.pb(a,b);
cout<<s.front().fi<<" ";
}
https://codeforces.com/problemset/problem/2002/D2