zoukankan      html  css  js  c++  java
  • Codeforces Round #523 (Div. 2)D(二分,多重集)

    #include<bits/stdc++.h>
    using namespace std;
    const long long N=1e5+5;
    const long long MOD=1e9+7;
    long long n,x,y,ans=0;
    long long cost[N];
    pair<long long,long long>a[N];
    multiset<pair<pair<long long,long long>,long long> >s;
    int main(){
     cin>>n>>x>>y;
     for(long long i=1;i<=n;i++){
      cin>>a[i].first>>a[i].second;
      s.insert({{a[i].second,a[i].first},i});
     }
     sort(a+1,a+n+1);
     for(long long i=1;i<=n;i++){
      cost[i]=(x+y*(a[i].second-a[i].first));
      if(!s.size()||s.begin()->first.first>=a[i].first)
       continue;
      auto it=s.lower_bound({{a[i].first,0},0});//自动二分查找到大于等于a[i].first的a[j].second
      long long pre=(--it)->first.first;//最有可能可以不用开一台新电视的节目
      if(y*(a[i].second-pre)>=cost[i])
       continue;
      cost[i]=y*(a[i].second-pre);
      s.erase(it);
     }
     for(long long i=1;i<=n;i++){
      ans+=cost[i];
      ans%=MOD;
     }
     ans%=MOD;
     cout<<ans;
    }
    //轻微思维加上二分,多重集的便利可见一斑,手写二分中遭遇不测~

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    20201224-3
    20201224-3 列表的使用1
    20201224 字符串常用操作
    20201224-1
    20201223-1 俄罗斯方块
    3月27日:毕业设计计划
    3月26日:毕业设计计划
    3月25日:毕业设计计划
    3月24日:毕业设计计划
    3月23日:毕业设计计划
  • 原文地址:https://www.cnblogs.com/ldudxy/p/10155487.html
Copyright © 2011-2022 走看看