羊の放牧 - インターバルエンドの問題

ポータル:羊放牧
意味タイトル:草原のn羊[1400]間隔、各ヒツジ範囲草、におけるQクエリ[L、R]区間内[BI、愛]食べるために(のみ)のように食べますその瞬間にどのように多くの羊が(羊を放牧少しだけ時間が、それはまた食べ唯一の羊である)までの放牧します。

実践:貪欲。私たちは、すべての羊は右端点に放牧されているようにしよう。ウシの牛における現在の点の左端にスタックがスタックを見て右エンドポイント値が格納され、左、となるように左側から右側点に掃引ランキング第二キーワードと最初のキーの右端の左端、牛はポイントが含まれ、それは、ヒープの小さな右の点の記述が含まれており、牛のための最低限の条件は右のポイントを放牧ヒープ出会いをすることはできません。

この質問は完璧にマッチ練習を持っているようです

コード:

#include<bits/stdc++.h>
using namespace std;

const int N=410;
typedef pair<int,int> PII;

PII cow[N];
int n,q,l,r;
priority_queue<int> head;

void solve(){
    head=priority_queue<int>();
    int cnt=0,j=1;
    for(int i=l;i<=r;++i){
        while(j<=n&&cow[j].first<=i){
            head.push(-cow[j].second);
            ++j;
        }
        while(!head.empty()&&-head.top()<i){
            head.pop();
        }
        if(!head.empty()){
            head.pop();
            cnt++;
        }
    }
    cout<<cnt<<'\n';
}
int main(){
    cin>>n>>q;
    for(int i=1;i<=n;++i)
        cin>>cow[i].first;
    for(int i=1;i<=n;++i)
        cin>>cow[i].second;
    sort(cow+1,cow+1+n);
    while(q--){
        cin>>l>>r;
        solve();
    }
    return 0;
}


公開された96元の記事 ウォン称賛11 ビュー2259

おすすめ

転載: blog.csdn.net/weixin_43769146/article/details/104059262