zoukankan      html  css  js  c++  java
  • [CCPC2020绵阳J] Joy of Handcraft

    [CCPC2020绵阳J] Joy of Handcraft - set

    Description

    给你n盏灯,每盏灯亮的周期为ti( 1 ~ ti 亮,ti+1 ~ 2ti灭,然后循环往复),每盏灯的亮度为 xi。 问你 1~m 中每一秒最亮的灯的亮度。

    Solution

    每种循环周期我们只保留最亮的那个,这样总的变化次数不超过 (O(nlog n))

    于是抽出所有事件排序后用 multiset 维护一下即可

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    int caseid = 0;
    
    void solve()
    {
        ++caseid;
        int n, m;
        cin >> n >> m;
        map<int, int> mp;
        for (int i = 1; i <= n; i++)
        {
            int t, x;
            cin >> t >> x;
            mp[t] = max(mp[t], x);
        }
        vector<pair<int, int>> vec;
        for (auto [t, x] : mp)
        {
            int flag = 1;
            for (int j = 1; j <= m; j += t)
            {
                vec.push_back({j, flag * x});
                flag = -flag;
            }
        }
        sort(vec.begin(), vec.end());
        multiset<int> ms;
        int pos = 0;
        cout << "Case #" << caseid << ": ";
        for (int i = 1; i <= m; i++)
        {
            while (pos < vec.size() && vec[pos].first <= i)
            {
                int x = vec[pos].second;
                if (x > 0)
                    ms.insert(x);
                else
                    ms.erase(ms.find(-x));
                ++pos;
            }
            if (ms.size() == 0)
                cout << 0;
            else
                cout << *ms.rbegin();
            if (i < m)
                cout << " ";
        }
        cout << endl;
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
        int t;
        cin >> t;
        while (t--)
            solve();
    }
    
  • 相关阅读:
    主从数据库
    Linux 安装 mysql
    centos7.5上安装go1.13.4
    Linux 安装php
    CENTOS7下安装redis
    CentOS 7安装Etherpad(在线协作编辑)
    nginx《一安装》
    springboot中redis取缓存类型转换异常
    linux安装mysql
    linux上传下载文件(转载https://www.jb51.net/article/143112.htm)
  • 原文地址:https://www.cnblogs.com/mollnn/p/14648265.html
Copyright © 2011-2022 走看看