题意:

给你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 }

CodeForces - 1140C的更多相关文章

  1. Codeforces 1140C(贪心+堆)

    题面 传送门 题意: 给出长度为n的序列b,t,定义一个子序列的值为\(\min\{ b_i\} \times \sum t_i\),求所有子序列中值最大的一个,输出最大值 分析 假如固定某个b[i] ...

  2. Codeforces A. Playlist(暴力剪枝)

    题目描述: Playlist time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  3. CSU-ACM2020寒假集训比赛2

    A - Messenger Simulator CodeForces - 1288E 两种解法,我选择了第二种 mn很好求,联系过就是1,没联系过就是初始位置 第一种:统计同一个人两次联系之间的出现的 ...

  4. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  5. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  6. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  7. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  8. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  9. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

随机推荐

  1. python函数1-函数基础

  2. Centos搭建Git服务端

    首先需要安装git,可以使用yum源在线安装 yum install -y git 创建一个git用户,用来运行管理git服务 adduser git 初始化git仓库(这里我们选择/home/git ...

  3. 【Linux】云服务器部署宝塔linux控制面板环境

    服务器购买及宝塔部署环境说明 简单记录 - 狂神的 服务器购买及宝塔部署环境说明 服务器如何购买 我们尽量趁打折的时候购买,比较便宜点!多看看有活动. 如果是学生,可以购买学生机, 学生机地址:htt ...

  4. 【ASM】asm从共享磁盘复制到本地磁盘中

    将ASM里面的文件copy到文件系统 数据文件存放在ASM里面查看不是很直观,有时候需要把文件从ASM里面copy到文件系统.我记录了一下两种方法,还有一种用AMDU,ODU也可以实现 1. 直接在a ...

  5. SAPCAR使用说明

    1.首先看一下SAPCAR的功能usage:create a new archive:SAPCAR -c[vir][f archive] [-P] [-C directory]   [-A filen ...

  6. Mybatis入门Demo(单表的增删改查)

    1.Mybatis 什么是Mybatis: mybatis是一个持久层框架,用java编写的 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动.创建连接等繁杂过程 ...

  7. STL_map和multimap容器

    一.map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...

  8. Cognos软件介绍文档(原创)

    1. Cognos简介 Cognos是世界上最大的业务智能软件制造商,它能够帮助用户提取公司数据,然后分析并汇总得出报告.Cognos有许多产品,但最为著名的还是它的PowerPlay联机分析处理(o ...

  9. C++学习之STL(二)String

    1.assign assign方法可以理解为先将原字符串清空,然后赋予新的值作替换. 返回类型为 string类型的引用.其常用的重载也有下列几种: a. string& assign ( c ...

  10. 学习Python之路

    陆续学习python已经有一段时间了,但是真正的安下心来学习还是在最近的一个月时间里,虽然每天学习的时间很有限,但是通过点滴的学习让自己感到从未有过的充实,完全打掉了以往认学学习一门语言难于登天的心理 ...