题意:

给你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. CAN总线采样点测试

    采样点是什么? 采样点是接受节点判断信号逻辑的位置,CAN通讯属于异步通讯.需要通过不断的重新同步才能保证收发节点的采样准确. 若采样点太靠前,则因为线缆原因,DUT外发报文尚未稳定,容易发生采样错误 ...

  2. 【Oracle】B-tree和函数索引

    转自:https://www.cnblogs.com/yumiko/p/5957613.html 函数索引 1.1 概述 在实际应用中,当条件列使用函数运算进行数据匹配时,即使该列建立了索引,索引也不 ...

  3. CTFshow萌新赛-web签到

    打开靶机 查看页面信息 可以看到有一个system函数 在Linux中可以使用":"隔离不同的语句 payload如下 https://5105c8b6-83aa-4993-91b ...

  4. win10打开IIS服务并发布网站

    1.打开控制面板 win+x后点击控制面板 2.点击程序集下边的解除安装程式 3.点击开启或关闭windows功能 4.找到Internet information services并勾选前面的复选框 ...

  5. [APUE] 文件 I/O

    文件操作相关 API:open, read, write, lseek, close. 多进程共享文件的相关 API:dup, dup2, fcntl, sync, fsync, ioctl. 文件操 ...

  6. 训练分类器 - 基于 PyTorch

    训练分类器 目前为止,我们已经掌握了如何去定义神经网络.计算损失和更新网络中的权重. 关于数据 通常来讲,当你开始处理图像.文字.音频和视频数据,你可以使用 Python 的标准库加载数据进入 Num ...

  7. 关掉IE提示“当前安全设置会使计算机有风险”

    我们先来看一下IE浏览器出现的提示窗口,该窗口位于最顶端,不点击设置的话,无法进行下一步的操作. 这时我们点击开始按钮 ,在弹出菜单中选择"运行"菜单项. 在打开的Windows运 ...

  8. Connection reset by peer的常见原因及解决办法 RST 大文件上传

    Connection reset by peer的常见原因及解决办法 Connection reset by peer的常见原因 - 简书 https://www.jianshu.com/p/263e ...

  9. 基于nginx的频率控制方案思考和实践

    基于nginx的频率控制方案思考 标签: 频率控制 nginx 背景 nginx其实有自带的limit_req和limit_conn模块,不过它们需要在配置文件中进行配置才能发挥作用,每次有频控策略的 ...

  10. proc/net/tcp中各项内容的含义