AcWing 127. 任务
参考y神的思路QWQ
算法:贪心
对于每一个任务:
- \(y\) 的差异最多能使利润\(w\)浮动\(2 * 100 = 200\)元。
- \(x\) 差\(1\),则会使利润\(w\)浮动\(500\)元
所以,\(y\)对利润的影响较小,\(x\)与其利润\(w\)的关系成对应关系(即\(x_{i} < x_{j}\),则\(w_{i}<w_{j}\),仅当\(x_{i} = x_{j}\),再按照\(y\)考虑即可。
策略可以变成以\(x\)从大到小的顺序考虑每一个任务,如果能匹配机器,则从能匹配的机器中选择机器\(y\)最小的一个。
匹配机器
- 先用\(x\)分别从大到小排序任务与机器。
- 对于每一个任务,把时间充足的机器放入集合中。
- 若存在,从集合中找出级别最低的机器使用,并且从集合中删除那个机器。
这种处理顺序可以保证:在处理第下一个任务时,集合中的机器时间都是充足的。且找机器的时间复杂度处于\(O(M+N)\)级别。
\(STL\) 的 \(multiset\) 恰好支持从序列中查找大于等于某数的最小值。
时间复杂度:O(MlogN + N)
\(multiset\) 的 \(lowerbound\) 时间为\(O(logN)\)的...
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
typedef pair<int,int> PII;
const int N = 100000 + 10;
int n, m;
PII a[N],b[N];
int main(){
while(cin >> n >> m){
for(int i = 1; i <= n; i++) cin >> a[i].first >> a[i].second;
for(int i = 1; i <= m; i++) cin >> b[i].first >> b[i].second;
sort(a + 1,a + 1 + n); sort(b + 1,b + 1 + m);
multiset<int> s; s.clear();
long long cnt = 0, ans = 0;
for(int i = m, j = n; i >= 1; i--){
//将时间足够的机器放到set中
while(j >= 1 && b[i].first <= a[j].first)s.insert(a[j--].second);
multiset<int>::iterator it = s.lower_bound(b[i].second);
if(it != s.end()){
cnt ++;
ans += 500 * b[i].first + 2 * b[i].second;
s.erase(it);
}
}
cout << cnt << " " << ans << endl;
}
return 0;
}
AcWing 127. 任务的更多相关文章
- Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号 1. dwr的长处相对于ajax来说.. 1 2. DWR工作原理 1 3. Dwr的架构 2 4. 自己 ...
- Atitit.ati  str  字符串增强api
Atitit.ati str 字符串增强api 1. java StringUtils方法全览 分类: Java2011-11-30 17:22 8194人阅读 评论(2) 收藏 举报 javas ...
- ECharts整合HT for Web的网络拓扑图应用
ECharts图形组件在1.0公布的时候我就已经有所关注.今天在做项目的时候遇到了图标的需求,在HTfor Web上也有图形组件的功能.可是在尝试了下详细实现后,发现HT for Web的图形组件是以 ...
- Atitit.一个cms有多少少扩展点,多少api wordpress  cms有多少api。。扩展点
Atitit.一个cms有多少少扩展点,多少api wordpress cms有多少api. . 扩展点 1. Api分类 WordPress APIs 1 1.1. 1 函数分类 2 1.2. 函 ...
- atitit。流程图的设计与制作 attilax 总结
atitit.流程图的设计与制作 attilax 总结 1. 流程图的规范1 2. 画图语言2 2.1. atitit.CSDN-markdown编辑器2 2.2. js-sequence-diagr ...
- Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号
Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号 1. 框架选型的要求 1 1.1. 文档多 1 1.2. 跨平台 1 2. html解析器特性: 1 2 ...
- linux rtl8188eu ap模式 密码错误 disassoc reason code(8)
2018-05-30 14:12:46 于深圳南山科技园 最近有个项目,客户需要通过手机app通过机器wifi热点连接,从而实现对机器的设置及视频的实时预览等各种功能.这两天一直在搞rtl8188eu ...
- 单独编译使用WebRTC的音频处理模块
块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...
- SYN攻击
一.TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服 ...
随机推荐
- Python_opencv库
1.车牌检测 ''' 项目名称:opencv/cv2 车牌检测 简介: 1.训练级联表 ***.xml [跳过...] 2.用如下代码加载级联表和目标图片识别车牌 注:推荐用anconda安装open ...
- C函数 printf 拼接字符串
C函数 printf 拼接字符串 从前学C语言,最常用的函数可能就是 printf 了,但是往往是这样: printf(年龄是:"%d",a); 由于不懂得怎么拼接字符串,有时候只 ...
- web安全原理-文件包含漏洞
前言 起来吃完早饭就开始刷攻防世界的题,一个简单的文件包含题我竟然都做不出来我服了 拿出买的书开始从头学习总结文件包含漏洞! 一.文件包含漏洞 文件包含漏洞 文件包含函数的参数没有经过过滤或者严格的 ...
- php批量转换时间戳
//批量转换时间戳 array_map(array($this, 'myfunction'),'时间戳数组'); //如 array('time1'=>11,'time2'=>2222); ...
- phpstorm换行符设置LF
git执行命令行 git config --global core.autocrlf true
- Golang 实现 Redis(6): 实现 pipeline 模式的 redis 客户端
本文是使用 golang 实现 redis 系列的第六篇, 将介绍如何实现一个 Pipeline 模式的 Redis 客户端. 本文的完整代码在Github:Godis/redis/client 通常 ...
- C#实现SM2国密加密
本文主要讲解"国密加密算法"SM系列的C#实现方法,不涉及具体的算法剖析,在网络上找到的java实现方法比较少,切在跨语言加密解密上会存在一些问题,所以整理此文志之.JAVA实现参 ...
- 粉丝少的UP主如何赚大钱
常逛B站的小伙伴应该知道,B站官方经常会推出各类征稿活动,奖金池也非常高,少则几万,多则上百万,可以说非常受UP主们的欢迎. 图1:B站各类活动 要知道,除了少数头部UP主可能因为没(有)有(钱)看( ...
- 怎么用Folx自动标签功能自动分类文件
Folx标签功能可以帮助职场人士提高文件分类的效率.通过使用自动标签功能,用户可以在文件下载时,自动为相关的文件进行标签分类.接下来,小编会以创建"软件"自动标签为例,为大家演示相 ...
- 轻松学编曲,论FL Studio的钢琴卷帘功能
在编曲软件FL Studio中有一个会被经常用到的功能,叫钢琴卷帘,可以用来扒谱.编曲.制作音乐等,并且操作简单,即使不懂乐理也能一样使用.今天,就来带大家认识一下钢琴卷帘. 还没有安装FL Stud ...