题目链接

参考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\)最小的一个。

匹配机器

  1. 先用\(x\)分别从大到小排序任务与机器。
  2. 对于每一个任务,把时间充足的机器放入集合中。
  3. 若存在,从集合中找出级别最低的机器使用,并且从集合中删除那个机器。

这种处理顺序可以保证:在处理第下一个任务时,集合中的机器时间都是充足的。且找机器的时间复杂度处于\(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&#160;127.&#160;任务的更多相关文章

  1. Atitit.ati&#160;dwr的原理and设计&#160;attilax&#160;总结&#160;java&#160;php&#160;版本号

    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号 1. dwr的长处相对于ajax来说.. 1 2. DWR工作原理 1 3. Dwr的架构 2 4. 自己 ...

  2. Atitit.ati&#160;&#160;str&#160;&#160;字符串增强api

    Atitit.ati  str  字符串增强api 1. java StringUtils方法全览 分类: Java2011-11-30 17:22 8194人阅读 评论(2) 收藏 举报 javas ...

  3. ECharts整合HT&#160;for&#160;Web的网络拓扑图应用

    ECharts图形组件在1.0公布的时候我就已经有所关注.今天在做项目的时候遇到了图标的需求,在HTfor Web上也有图形组件的功能.可是在尝试了下详细实现后,发现HT for Web的图形组件是以 ...

  4. Atitit.一个cms有多少少扩展点,多少api&#160;wordpress&#160;&#160;cms有多少api。。扩展点

    Atitit.一个cms有多少少扩展点,多少api wordpress  cms有多少api. . 扩展点 1. Api分类 WordPress APIs 1 1.1. 1 函数分类 2 1.2. 函 ...

  5. atitit。流程图的设计与制作&#160;attilax&#160;总结

    atitit.流程图的设计与制作 attilax 总结 1. 流程图的规范1 2. 画图语言2 2.1. atitit.CSDN-markdown编辑器2 2.2. js-sequence-diagr ...

  6. Atitit.html解析器的选型&#160;jsoup&#160;nsoup&#160;,java&#160;c#&#160;.net&#160;版本号

    Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号 1. 框架选型的要求 1 1.1. 文档多 1 1.2. 跨平台 1 2. html解析器特性: 1 2 ...

  7. linux rtl8188eu ap模式 密码错误 disassoc&#160;reason&#160;code(8)

    2018-05-30 14:12:46 于深圳南山科技园 最近有个项目,客户需要通过手机app通过机器wifi热点连接,从而实现对机器的设置及视频的实时预览等各种功能.这两天一直在搞rtl8188eu ...

  8. 单独编译使用WebRTC的音频处理模块

    块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...

  9. SYN攻击

    一.TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服 ...

随机推荐

  1. Ceph对象主本损坏的修复方法

    前言 问题的触发是在进行一个目录的查询的时候,osd就会挂掉,开始以为是osd操作超时了,后来发现每次访问这个对象都有问题 log [WRN] : slow request 60.793196 sec ...

  2. sql实现通过父级id查询所有的子集

    通过sql实现传入父级id查询出所有的子集 最近刚好有个业务需要这样实现个功能,就是在点击查询列表详情的时候只会传入父级id,而详情得渲染出所有子集,那么做法有很多,可以直接通过代码递归查询去实现, ...

  3. (一)廖师兄springboot微信点餐SQL建表脚本

      数据库设计 数据库表之间的关系 类目表(product_category) 商品表(product_info) 订单主表(order_master) 订单详情表(order_detail) 卖家信 ...

  4. Nacos 多环境配置

    本文探讨Nacos作为配置中心,如何实现不同环境(开发.测试.灰度.正式)的配置管理问题 就像Maven用groupId.artifactId.version三者来定位jar包在仓库中的位置一样,Na ...

  5. python文件操作与编解码

    1 # 文件操作 2 3 ''' 4 1.文件路径:要知道文件的路径 5 6 2.编码方式:要知道文件是什么编码的.utf-8 gbk...... 7 8 3.操作方式:要以什么样的方式进行打开这个文 ...

  6. 分布式监控系统之Zabbix网络发现

    前文我们了解了zabbix的宏,自定义item和模板的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14013331.html:今天我们来了解下zab ...

  7. 信息收集之——旁站、C段

    旁站的概念 ​旁站指的是同一服务器上的其他网站,很多时候,有些网站可能不是那么容易入侵.那么,可以查看该网站所在的服务器上是否还有其他网站.如果有其他网站的话,可以先拿下其他网站的webshell,然 ...

  8. 常见web漏洞修复方法

    方法如下: 漏洞修复.(输入过滤,输出转义) 1.在连接数据库时,在接收参数后进行转义,$id = mysql_real_escape_string($id); 2.在网页源码中在接收参数后可用htm ...

  9. 这篇SpringBoot整合JSON的学习笔记,建议收藏起来,写的太细了

    前言 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛. 采用完全独立于编程语言的文本格式来存储和表示数据. 简洁和清晰 ...

  10. python3处理csv文件

    1. 基础语句 1.1 文件的读取 如果需要读取一行数据如下表1所示,那么需要读取域名下面的数据,便使用如下代码: with open('A.csv','rb') as csvfile: reader ...