CF 2100-2400 data structures 亂做

ft61發表於2024-09-03

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

相關文章