【算法競賽進階指南】USACO07Tallest Cow
阿新 • • 發佈:2018-12-03
{0} spa tin util air 左右 urn 結果 就是
前綴和,利用左右端點操作代替對區間的操作,從而優化輸入,最後進行一次前綴和的操作,求得結果,這道題裏面有個很關鍵的問題,就是需要去重,本來我想用set,但貌似有點鬼畜,算了,利用map去重,還有pair類型(學一下)
#include <iostream> #include <algorithm> #include <map> #include <utility> using namespace std; map<pair<int,int>,bool>book;//去重 int main(){ int N,I,H,R; cin>>N>>I>>H>>R; int h[10005]={0};//初始化 while(R--){ int a,b; cin>>a>>b; if(a>b) swap(a,b);//確保a,b大小順序 if(book[make_pair(a,b)]) continue;//去重 else { h[a+1]--;//左右端點代替區間操作 h[b]++; book[make_pair(a,b)]=true; } } for(int i=1;i<=N;i++){ h[i]=h[i]+h[i-1]; cout<<h[i]+H<<"\n"; } return 0; }
【算法競賽進階指南】USACO07Tallest Cow