• 任务


     

     

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef pair<int, int> PII;
     5 const int N = 100010;
     6 int n, m;
     7 PII mchs[N], tasks[N];
     8 //存储机器,存储任务
     9 int main() {
    10     while (cin >> n >> m) { //多组输入
    11         for (int i = 0; i < n; i++) {
    12             cin >> mchs[i].first >> mchs[i].second;
    13         }
    14         for (int i = 0; i < m; i++) {
    15             cin >> tasks[i].first >> tasks[i].second;
    16         }
    17         sort(mchs, mchs + n); //从小到大排序
    18         sort(tasks, tasks + m); //从小到大排序
    19         multiset<int> ys; //存储所有y
    20         /*
    21             multiset是<set>库中一个非常有用的类型,
    22             它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成
    23             而且能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。
    24         */
    25         ll cnt = 0, res = 0;
    26         //i枚举任务,j枚举机器
    27         for (int i = m - 1, j = n - 1; i >= 0; i--) {
    28             //每次把横坐标大于等于当前任务的机器都加进来
    29             while (j >= 0 && mchs[j].first >= tasks[i].first) {
    30                 ys.insert(mchs[j].second);
    31                 j--;
    32             }
    33             multiset<int>::iterator it = ys.lower_bound(tasks[i].second);
    34             if (it != ys.end()) {
    35                 cnt++;
    36                 res += 500 * tasks[i].first + 2 * tasks[i].second;
    37                 ys.erase(it); //用掉了一个机器
    38             }
    39         }
    40         cout << cnt << " " << res << endl;
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    du 命令
    iostat 命令
    sar 命令
    mkdir 命令
    time 命令
    date 命令
    history 命令
    vmstat 命令
    pmap 命令
    df 命令
  • 原文地址:https://www.cnblogs.com/fx1998/p/14033467.html
Copyright © 2020-2023  润新知