当前位置: 首页 > news >正文

Educational Codeforces Round 62 (Rated for Div. 2) C. Playlist

 一开始肯定要排个序,b相同时t大的在前边,不同时b大的在前面。

然后想最多只能选k个的限制,可以这样想,每次用到的b只能用已选到的最小的值,那可以把每个b都枚举一遍,然后每一次选时长最长的,且b大于等于当前的b的那k个不就好了吗,时间复杂度也才O(n),然后考虑怎么才能每次快速地选到最大的,这时候就可以考虑优先队列了,每次排序都是logn的复杂度,nlogn,完美。

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'using namespace std;typedef pair<int, int> PII;
typedef long long ll;const int N = 300010;int n, k;
struct Node
{int a, b;
}songs[N];bool cmp(Node A, Node B)
{if(A.b == B.b)return A.a > B.a;return A.b > B.b;
}int main()
{IOScin >> n >> k;for(int i = 1; i <= n; i ++){cin >> songs[i].a >> songs[i].b;}sort(songs + 1, songs + 1 + n, cmp);//cout << endl;//for(int i = 1; i <= n; i ++)cout << songs[i].a << ' ' << songs[i].b << endl;priority_queue<int, vector<int>, greater<int>> q;ll ans = 0, res = 0;for(int i = 1; i <= n; i ++){if(q.size() < k){q.push(songs[i].a);res += songs[i].a;}else if(songs[i].a > q.top()){res -= q.top();res += songs[i].a;q.pop();q.push(songs[i].a);}ans = max(ans, res * songs[i].b);}cout << ans << endl;return 0;
}

Problem - 1140C - Codeforces

http://www.lryc.cn/news/130485.html

相关文章:

  • postgresql中基础sql查询
  • 如何做好科技文献资料的翻译!
  • 处理Selenium3+python3定位鼠标悬停才显示的元素
  • python通过S7协议读取西门子200smart数据
  • 深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)
  • 【云原生】K8S控制详解
  • CentOS 8 安装 oracle 23c CentOS9 Error deal
  • sklearn-决策树
  • 元宇宙之应用(05) 远程医疗手术
  • centos7在线安装 jdk1.8+tomcat+mysql8+nginx+docker
  • Vue中实现分页
  • vue3 + antv/x6 实现拖拽侧边栏节点到画布
  • 视频云存储/安防监控/视频汇聚EasyCVR平台新增设备经纬度选取
  • CentOS7源码安装MySQL详细教程
  • SpringBoot + Vue 微人事(十二)
  • 上半年巴比食品增收不增利,下半年失速的团餐业务能否“复苏”?
  • Java基础篇--内部类
  • 完全备份、增量备份、差异备份、binlog日志
  • Flutter实现Service + UI 全面跨平台
  • 微软商店的ubuntu 连不上网Temporary failure in name resolution
  • “深入剖析JVM内部工作原理:解密Java虚拟机“
  • 数据结构与算法基础
  • 人工智能任务1-【NLP系列】句子嵌入的应用与多模型实现方式
  • 【Java并发编程面试题(60道)】
  • Python:逢七拍腿游戏
  • esp32C3 micropython oled 恐龙快跑游戏
  • 53.Linux day03 文件查看命令,vi/vim常用命令
  • YOLOv8改进后效果
  • 小程序的数据绑定和事件绑定
  • 第四章MyBatis核心配置文件