zoukankan      html  css  js  c++  java
  • Codeforces Round #524 (Div. 2)D

    题意是给你n个节目,每次租一台电视需要消耗x+(r-l)*y元,问你怎么样安排才能使得看完所有节目并且消费最少,输出最少的金额

    做法是按节目开始时间l排序,遍历所有节目,如果该节目不能在已有的电视上播放或者在已有的电视上播放消耗比再去借一台更多的时候,

    那么就再去借一台电视机,当有多个电视机可以播放的时候,贪心选择r最大的电视机.由于是按l升序排序,当(tv[i].l-r)*y>x的时候则表明此时

    用已有的电视机播放不如再去借一台,而剩下的l只会更大,所以要erase当前的电视机,否则会超时.PS:WA了好多发,最后发现是开了set没有开multiset,哭了QAQ

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    const ll mod=1e9+7;
    struct node
    {
        ll l,r;
    } tv[100005];
    bool cmp(node a,node b)
    {
        if(a.l==b.l)return a.r<b.r;
        return a.l<b.l;
    }
    multiset<ll>q;
    int main()
    {
        ll n,x,y;
        scanf("%lld%lld%lld",&n,&x,&y);
        for (int i=0; i<n; i++ )
        {
            scanf("%lld%lld",&tv[i].l,&tv[i].r);
        }
        sort(tv,tv+n,cmp);
        int cnt=0;
        ll ans=0;
        for (int i=0; i<n; i++ )
        {
            int flag=1;
            auto tmp=q.begin();
            for(auto it=q.begin(); it!=q.end(); )
            {
                ll r=*it;
                if(tv[i].l<=r)
                {
                    break;
                }
                if((tv[i].l-r)*y<=x)
                {
                    tmp=it;
                    flag=0;
                    it++;
                }
                else
                {
                    q.erase(it);
                    it=q.begin();
                }
            }
            if(flag)
            {
                ans=((ans+x)%mod+(y*((tv[i].r-tv[i].l)%mod))%mod)%mod;
                q.insert(tv[i].r);
            }
            else
            {
                ll r=*tmp;
                ans=(ans+(((tv[i].r-r)%mod)*y)%mod)%mod;
                q.erase(tmp);
                q.insert(tv[i].r);
            }
        }
        cout<<ans;
        return 0;
    }
    

      

  • 相关阅读:
    SET TRANSACTION
    SET SESSION AUTHORIZATION
    SET CONSTRAINTS
    SET
    services
    send, sendto, sendmsg
    并列句分析
    cURL 学习笔记与总结(3)模拟登录博客园并下载个人随笔首页
    SQLServer2019安装教程
    Java实现 LeetCode 85 最大矩形
  • 原文地址:https://www.cnblogs.com/Json-Five/p/10010105.html
Copyright © 2011-2022 走看看