CodeForces - 1140C
2024-10-21 13:43:01
题意:
给你n首歌,每首歌有一个长度ti和一个愉悦度bi,你最多可以从中挑选出来k首歌。那么你挑选出来这首歌会为你增加sum歌愉悦度,sum的求法就是:挑选出来所有歌的长度之和,乘与挑选出来所有歌中愉悦度的最小值。让你输出最大的sum
题解:
看到这道题的第一个想法就是暴力,但是数据显然会让我们TLE,这样的话就把暴力优化一下,我们可以枚举我们挑选出来的这些歌中的最小bi(设这个bi为x),然后这个最小bi这首歌我们必须选上,我们再选择其他歌的时候就要满足其他歌的bi要大于x,且选择歌的数量要小于等于k。
如果之前已经选择了k首歌了,我们就要已选择的歌中从中找出来那个最小的ti,把它扔出去,然后把最小bi这首歌(即,x代表这首歌)放进去
在找最小bi这个过程前,我们可以对这n首歌按照bi从大到小排序,然后用优先队列来维护我们选的歌曲
具体过程见代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<math.h>
6 #include<vector>
7 #include<queue>
8 #include<map>
9 using namespace std;
10 typedef long long ll;
11 const int maxn=3e5+5;
12 const int INF=0x3f3f3f3f;
13 const double eps=1e-10;
14 struct shudui
15 {
16 ll bea,len;
17 bool operator < (const shudui x)const
18 {
19 return len>x.len;
20 }
21 }m[maxn],str1;
22 //struct node
23 //{
24 // ll bea,len;
25 //
26 //};
27 priority_queue<shudui>r;
28 bool mmp(shudui x,shudui y)
29 {
30 return x.bea>y.bea;
31 }
32 int main()
33 {
34 ll n,k;
35 scanf("%lld%lld",&n,&k);
36 for(ll i=0;i<n;++i)
37 scanf("%lld%lld",&m[i].len,&m[i].bea);
38 sort(m,m+n,mmp);
39 ll sum=0,maxx=0;
40 for(ll i=0;i<n;++i)
41 {
42 if (r.size()<k)//没选满k个
43 {
44 r.push(m[i]);//选上
45 sum+=m[i].len;
46 maxx=max(maxx,sum*m[i].bea);//更新答案
47 }
48 else
49 {
50 str1=r.top();
51 sum-=str1.len;
52 r.pop();//踢掉那个最小的
53 r.push(m[i]);//选上新的
54 sum+=m[i].len;
55 maxx=max(maxx,sum*m[i].bea);//更新答案
56 }
57 }
58 printf("%lld\n",maxx);
59 return 0;
60 }
最新文章
- SQL Azure (14) 将云端SQL Azure中的数据库备份到本地SQL Server
- ios学习-制作一个浏览图片的Demo
- (转)iOS安全 对本地文件的保护
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
- Oracle中instr 函数的详解
- STL源码剖析读书笔记--第四章--序列式容器
- PCA MATLAB
- [PWA] 17. Cache the photo
- bash启动加载过程
- python使用h5py读取mat文件数据,并保存图像
- 关于for循环里面异步操作的问题
- 二级联动,三级联动,初学者,纯javascript,不含jQuery
- P1892 [BOI2003]团伙 并查集
- [No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)
- 比赛总结——atcoder beginner contest 109
- 方差variance, 协方差covariance, 协方差矩阵covariance matrix | scatter matrix | weighted covariance | Eigenvalues and eigenvectors
- 访问注解(annotation)的几种常见方法
- GDPR给安全的影响
- JS实现一个基于对象的链表
- 字符串转换atof atoi atol gcvt strtod strtol strto ul toascii tolower toupper
热门文章
- python3实现计算器
- mysql中的基本注入函数
- 【Linux】CentOS4 系统最后的网络yum源
- 构造无字母数字Webshell
- merge join pg伪代码
- F4IF_INT_TABLE_VALUE_REQUEST选择屏幕自定义F4帮助
- 1.5V升3V芯片和电路图,DC-DC升压IC
- 前端知识(二)08-Vue.js的路由-谷粒学院
- .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
- MAX232数据方向