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;
}
//轻微思维加上二分,多重集的便利可见一斑,手写二分中遭遇不测~
最新文章
- Ucenter,Discuz
- nginx配置404
- Linux下mysql备份 恢复
- jquery页面刷新reload
- qt 获取系统磁盘空间大小
- Ubuntu 12.04搭建Andorid编译环境
- Java多线程同步——生产者消费者问题
- OWASP Top 10 – 2013, 最新十大安全隐患(ASP.NET解决方法)
- bzoj 3172 [Tjoi2013]单词(fail树,DP)
- Linux 查看文件
- 【Android基础】listview控件的使用(3)------Map与SimpleAdapter组成的多显示条目的Listview
- Spring Boot 国际化及点击链接跳转国家语言
- 依赖注入之setter注入---只需修改配置,电脑就可以安装不同的打印机;读取properties配置文件并创建实例;实现不采用new的方式直接实例化对象
- OpenStack容器网络项目Kuryr(libnetwork)
- PHP中日志相关处理
- C# 数组转json
- uva-10420-排序
- Python开发【前端】:Ajax(一)
- 微信小程序 功能函数 地图定位相对直线距离
- 获取 js DOM元素中绑定的所有事件,模仿 chrome getEventListeners
热门文章
- 分享知识-快乐自己:N及分类(双重循环、递归)实现
- 分享知识-快乐自己:Shrio 案例Demo概述
- node cluster模块的使用和测试
- 详细的.Net并行编程高级教程--Parallel
- 使用命令行生成 APNG 图片
- vs参数配置
- 【leetcode刷题笔记】Integer to Roman
- 把自定义的decoder加入ffmpeg源码
- AngularJS directive简述
- Core Data存储数据出错(This NSPersistentStoreCoordinator has no persistent stores (unknown))