题意:n个节目,每个节目的播放时间为[li,ri],你需要选择一些电视机全部播放这些节目,一台电视机不能同时播放多个节目,选择一个新的电视机代价为x , 如果某台电视机的使用时间为[Li,Ri]需要付出(Ri-Li)*y的代价,问最小的代价;

题解:
        答案是选由于使用电视播放节目的代价是固定的,所以只需要让浪费的使用时间和选择一个新的电视的代价之和最小即可,左端点排序,对于[li,ri],每次选择前面使得rj<li的rj最大的(lj,rj),将x和(li-rj)*y比较讨论;

cf的题解里面写了证明,但是我总感觉不太严谨的样子。。。。。

具体实现用multiset;

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<set>
 4 #include<algorithm>
 5 using namespace std;
 6 const int N=100010 ,mod=1e9+7;
 7 int n,ans,x,y;
 8 struct node{
 9     int x,y;
10     bool operator <(const node&A)const{
11         return x == A.x ? y < A.y : x < A.x;
12     }
13 }a[N];
14 multiset<int>s;
15 multiset<int>::iterator it;
16 int main(){
17 //    freopen("D.in","r",stdin);
18 //    freopen("D.out","w",stdout);
19     scanf("%d%d%d",&n,&x,&y);
20     for(int i=1;i<=n;i++){
21         scanf("%d%d",&a[i].x,&a[i].y);
22         ans = (ans + 1ll * y * (a[i].y - a[i].x) %mod)%mod;
23     }
24     sort(a+1,a+n+1);
25     for(int i=1;i<=n;i++){
26         it = s.lower_bound(a[i].x);
27         if(it==s.begin() || 1ll*(a[i].x-*(--it)) * y >= x){
28             ans=(ans+x)%mod;
29             s.insert(a[i].y);
30         }else{
31             ans=(ans+1ll*(a[i].x-*it) * y%mod)%mod;
32             s.erase(it);
33             s.insert(a[i].y);
34         }
35     }
36     printf("%d\n",ans);
37     return 0;
38 }
39  

View Code

转载于:https://www.cnblogs.com/Paul-Guderian/p/10014571.html

【codeforces】【Round#523D】TV shows相关推荐

  1. 【CodeForces 1265C --- Beautiful Regional Contest】

    [CodeForces 1265C --- Beautiful Regional Contest] 题目来源:点击进入[CodeForces 1265C - Beautiful Regional Co ...

  2. 【COCI 2018/2019 Round #2】Kocka

    这道题也是一个ex的模拟题 不过他比Zamjena可爱 作为一个帅气的小哥哥,让我们一起, 开启你的模拟ex大门,C++从入门到放弃! 题目 题目描述 我又来了!我又来了! 在清晨来到儿童游乐园的时候 ...

  3. 【Codeforces 652 C Foe Pairs 】

    C. Foe Pairs time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  4. 【Codeforces 803 C. Maximal GCD】

    C. Maximal GCD time limit per test1 second memory limit per test256 megabytes inputstandard input ou ...

  5. 【Codeforces Round #523 (Div. 2) D.TV Shows】 贪心+二分

    D. TV Shows 题意 给你要看的n个电视节目的 l i 和 r i l_i和r_i li​和ri​,每次要申请一个新的电视的花费是 x + ( r i − l i ) ∗ y x+(r_i-l ...

  6. 【Codeforces Round #767 (Div. 2)】 C. Meximum Array 题解

    [Codeforces Round #767 (Div. 2) ]C. Meximum Array 题解 1629C: Meximum Array 题解 [Codeforces Round #767 ...

  7. 【Codeforces】Round #488 (Div. 2) 总结

    [Codeforces]Round #488 (Div. 2) 总结 比较僵硬的一场,还是手速不够,但是作为正式成为竞赛生的第一场比赛还是比较圆满的,起码没有FST,A掉ABCD,总排82,怒涨rat ...

  8. 【CodeForces Round #550】A-F | 模拟 | 贪心 | 高精 | BFS | 二分图 | E

    今年怎么没有愚人节比赛了   CF你看看人家洛谷   唉鸭原来那边还没到愚人节呢- 愚人节比赛还是有的,在今晚 qwq [CodeForces 1144   A-F] Tags:模拟 贪心 BFS 高 ...

  9. 【Codeforces Round #439 (Div. 2) A】The Artful Expedient

    [链接] 链接 [题意] [题解] 暴力 [错的次数] 在这里输入错的次数 [反思] 在这里输入反思 [代码] #include <bits/stdc++.h> using namespa ...

最新文章

  1. 获取App Store中App的ipa包
  2. 去重仅保留一条_清水出芙蓉,天然去雕饰,牛仔背带裤配针织上衣的清纯温柔穿搭...
  3. 将.gitignore应用于已提交的文件
  4. OpenStack的部署T版(八)——Dashboard
  5. 为什么spark没有java的交互模式?
  6. Windows手动添加开机启动项
  7. 高速公路坐标高程计算软件3.5发布
  8. oracle10g最快安装教程,史上最详细Oracle 10g安装教程
  9. 【pwn】记一道shellcode侧信道攻击
  10. 税控盘开票助手Excel导入或ERP导入开票明细接口使用说明(使用手册)
  11. php数据库太小要怎么改,PHP入坑之 MySqli对数据库增删改查
  12. 「HEOI 2014」南园满地堆轻絮
  13. Android 双卡双待
  14. 产品原型绘制要求与规范
  15. 网站收录信息查询工具|世界排名
  16. Rancher hosted Kubernetes AKS
  17. 2022第七届“数维杯”大学生数学建模夏令营
  18. 三菱服务器显示d1d2,三菱PLC指令SMOV D2 K2 K2 D1 K3详解
  19. 肠胃一直不好,该如何进行调理?
  20. 关于游戏开发,如何开发一款游戏(基于unity)

热门文章

  1. 英语时态+语态(基础框架)
  2. python执行系统命令的方法:subprocess
  3. 万象霜天计算机谱子,万象霜天(多轨道扒谱版)
  4. 【数据结构】测试4 串
  5. 台式计算机怎样能搜无线连接,台式机无线网如何显示
  6. java从入门到精通教程_Java从入门到精通全套教程
  7. 马尾神经损伤后对的生活影响
  8. matlab扣除三维荧光,三维荧光中瑞利散射扣除方法与流程
  9. html 设置div的宽度
  10. UR机械臂逆运动学解析解