题目链接

题目

题目描述

《梦三国2》是一款3D MOBA类网游。游戏继承《梦三国》的三国文化背景和基础玩法,并加入许多全新地图和全新竞技玩法。由于人气高,游戏在线人数与日俱增,我们知道当在线人数不断增长的时候,会给服务器带来巨大的压力。

已知该游戏中共有n名用户,编号从1到n,服务器共有m条服务线,每个用户最多只能登陆一条线,第i条线最多可以容纳v[i]名用户同时在线,且只能给编号在[l[i],r[i]]范围内的用户提供服务。现在希望找出一种合理的资源分配方案,使得同时在线人数最大化,请输出这个最大人数。

输入描述

数据组数不超过10

对于每组数据。

第一行包括两个正整数n,m(1<=n,m<=10000)

接下来m行,每行三个整数l[i],r[i],v[i]

输出描述

对于每组数据输出一个正整数,即最多容纳的用户数量

示例1

输入

5 3
1 1 1
2 4 2
2 3 2

输出

4

说明

我们可以让1号服务线服务用户1,2号服务线服务用户4,3号服务线服务用户2和3

题解

知识点:贪心,优先队列。

第一个想到的贪心是让区间的右端点从小到大排序,然后从第一个人开始遍历,看看在不在这个区间。因为这样做前面的人匹配到靠前的线路,可以让更多后面的人有机会匹配到线路。若是人的编号超过右端点了,对于这个人,这条线路就用不了了,可以丢了。

但还需要注意左端点,因为假设左端点够不到某个人,但其右端点是靠前的,那对于后面能用的人这个线路就被扔掉了,是浪费了。因此我们要对每个人,把从他开始的线路,即左端点刚好是他编号的线路,先放入优先队列按右端点从小到大排序,这样优先队列里参与匹配的线路就都是够得到当前点,且是按右端点排序好的。

所以我们一开始把线路按左端点从小到大排序,遇到一个人就把从他开始的线路加入优先队列,这样选的时候就都是够得到的线路。再把有效的线路按右端点从小到大排序,尽可能用掉右端点靠前的线路,少占用右端点靠后的线路,给后面人留机会。最后编号超过队头右端点就可以弹出队头,因为这条线路不可能用得到了。

注意,没用完的线路要放回队列。

时间复杂度 \(O(n \log n)\)

空间复杂度 \(O(n)\)

代码

#include <bits/stdc++.h>

using namespace std;

struct node {
int l, r, v;
}a[10007]; int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m;
while (cin >> n >> m) {
for (int i = 0;i < m;i++) cin >> a[i].l >> a[i].r >> a[i].v;
sort(a, a + m, [&](node a, node b) {return a.l < b.l;});
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
int ans = 0;
for (int i = 1, pos = 0;i <= n;i++) {
while (!pq.empty() && pq.top().first < i) pq.pop();
while (pos < m && a[pos].l == i) {
pq.push({ a[pos].r,a[pos].v });
pos++;
}
if (!pq.empty()) {
ans++;
pair<int, int> x = pq.top();
pq.pop();
x.second--;
if (x.second) pq.push(x);
}
}
cout << ans << '\n';
}
return 0;
}

NC20951 网络优化的更多相关文章

  1. 为重负网络优化 Nginx 和 Node.js --引用自https://linux.cn/article-1314-1.html

    为重负网络优化 Nginx 和 Node.js 在搭建高吞吐量web应用这个议题上,NginX和Node.js可谓是天生一对.他们都是基于事件驱动模型而设计,可以轻易突破Apache等传统web服务器 ...

  2. 【网络流24题】 No.10 餐巾计划问题 (线性规划网络优化 最小费用最大流)

    [题意] 一个餐厅在相继的 N 天里, 每天需用的餐巾数不尽相同. 假设第 i 天需要 ri 块餐巾(i=1,2,-, N). 餐厅可以购买新的餐巾,每块餐巾的费用为 p 分:或者把旧餐巾送到快洗部, ...

  3. HttpClient 网络优化

    HttpClient 网络优化 尽管Android官网推荐在2.3及后续版本中使用HttpURLConnection作为网络开发首选类,但在连接管理和线程安全方面,HttpClient还是具有很大优势 ...

  4. KVM虚拟化网络优化技术总结

    https://www.intel.com/content/dam/www/public/us/en/documents/technology-briefs/sr-iov-nfv-tech-brief ...

  5. Android 网络优化,使用 HTTPDNS 优化 DNS,从原理到 OkHttp 集成

    一.前言 谈到优化,首先第一步,肯定是把一个大功能,拆分成一个个细小的环节,再单个拎出来找到可以优化的点,App 的网络优化也是如此. 在 App 访问网络的时候,DNS 解析是网络请求的第一步,默认 ...

  6. 融云亮相GDG谷歌女性开发者大会 揭秘IMSDK网络优化策略

    4 月 20 日,冷雨阻碍不了天津GDG谷歌女性开发者大会的热烈召开,一众开发者.架构师和科技公司创业者云集一堂,就女性开发者的技术.职场.人生多方面话题展开深入探讨.活动由GDG (谷歌开发者社区) ...

  7. 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结

    1.前言 本文接上篇<移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”>,关于移动网络的主要特性,在上篇中已进行过详细地阐述,本文将针对上篇中提到的特性,结合我们的实践经 ...

  8. TensorFlow笔记-07-神经网络优化-学习率,滑动平均

    TensorFlow笔记-07-神经网络优化-学习率,滑动平均 学习率 学习率 learning_rate: 表示了每次参数更新的幅度大小.学习率过大,会导致待优化的参数在最小值附近波动,不收敛:学习 ...

  9. TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵

    TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵 神经元模型:用数学公式比表示为:f(Σi xi*wi + b), f为激活函数 神经网络 是以神经元为基本单位构成的 激 ...

  10. 移动 APP 网络优化概述

    一般开发一个 APP,会直接调用系统提供的网络请求接口去服务端请求数据,再针对返回的数据进行一些处理,或者使用AFNetworking/OKHttp这样的网络库,管理好请求线程和队列,再自动做一些数据 ...

随机推荐

  1. 【 js 】 构造函数返回的注意事项

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 利用工具查看JMS微服务在线情况,可直接调用远程方法,也可自动生成微服务客户端代码

    链接:https://cccscls-my.sharepoint.com/personal/jack_mutc_ca/_layouts/15/onedrive.aspx?id=%2Fpersonal% ...

  3. SpringMVC06——数据绑定——2021-05-09

    数据绑定介绍 在执行程序时,SpringMVC会根据客户端请求参数的不同, 将请求信息中的信息以一定的方式转换并绑定到控制器类的方法参数中. 在数据绑定过程中,SpringMVC框架会通过数据绑定组件 ...

  4. ASR6505是基于STM 8位MCU的无线通信芯片组

    ASR6505是基于STM 8位MCU的无线通信芯片组 ASR6505是一种通用的LoRa无线通信芯片组,集成了LoRa无线电收发器.LoRa调制解调器和一个8位CISC MCU ASR6505是基于 ...

  5. SQLServer数据库JDBC连接串参数的简单学习

    SQLServer数据库JDBC连接串参数的简单学习 背景 前段时间一直跟同事一起处理SQLServer 比其他数据库的deadlock更多的问题. 涉及到了几个驱动的参数. 想着问题基本上告一段落, ...

  6. [转帖]Region Merge Config

    TiKV replicates a segment of data in Regions via the Raft state machine. As data writes increase, a ...

  7. [转帖]分析redis 大key

    http://www.lishuai.fun/2023/05/05/redis-bigkey/#/%E5%AE%89%E8%A3%85 redis-rdb-tools 是一个 python 的解析 r ...

  8. [转帖]新版 Elasticsearch 中的强悍插件 X-pack

    https://zhuanlan.zhihu.com/p/36337697   3 人赞同了该文章 作者:Alan 岂安科技运维工程师努力踏上一条为后人留坑的运维之路.(逃 1 前言 Elk 日志可视 ...

  9. [转帖]SSL Certificate Exporter

    https://github.com/ribbybibby/ssl_exporter Exports metrics for certificates collected from various s ...

  10. 【转帖】《MySQL高级篇》四、索引的存储结构

    1. 为什么使用索引 假如给数据使用 二叉树 这样的数据结构进行存储,如下图所示 2.索引及其优缺点 2.1 索引概述 2.2 优点 类似大学图书馆建书目索引,提高数据检索的效率,降低 数据库的 IO ...