Educational Codeforces Round 62 (Rated for Div. 2) - C Playlist
当时题意看错了。。。不过大致思路是对的,唯一没有想到的就是用优先队列搞这个东西,真是不该啊。。。
题意大概就是,有N首歌,N首歌有两个东西,一个是长度Ti,一个是美丽值Bi,你最多可以选择K首歌,
这些首歌的总和是这些歌的总的长度乘以其中最大的美丽值。
简而言之,就是选择最K个点,问其第一权值总和乘以最小第二权值最大时多少?
很容易想到需要把第二权值排序。
举个例子
4 3
4 7
15 1
3 6
6 8
排序后
T 15 3 4 6
B 1 6 7 8
我们发现,如果我选择了第一个,我需要在剩下的中找到k-1个第一个权值最大的数,并求和。
同样的,我们如果选择了第二个,那么第一个一定是不能选的,我们也是需要在剩下的数中找到前k-1个第一权值最大的数,并求和。
想到这里,离成功就很近了,但是我就没想下去,就觉得已经不可能了。。。
我们不妨这样考虑,如果我逆向枚举呢???
我从N-K+1开始,那么第K个一定被选,后K-1个也一定必选对吧?
如果我从N-K开始,那么第K-1个一定被选,后K个中我们找到其中的前K-1个第一权值大的数?
如果我从N-K-1开始,那么第K-2个一定被选,后K个中我们找到其中前K-1个第一权值大的数?
关键问题在,如何每次维护前K-1个第一权值大的数,而且还要维护其和?
那么优先队列便呼之欲出了,首先维护后K项的和,每次往后选择的时候,这时优先队列有K个值,我们需要把,优先队列中,最小的给那走,并加上当前必选的第二权值,再维护和。这样优先队列里面一直维护的从从枚举点后K-1个最大值。但是需要注意的是,题意是要求最多K个,那么我们再把后k项的值再最开始一并维护就行了。
#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#include<queue>
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define per(i,j,k) for(int i=j;i>=k;i--)
#define LL long long
using namespace std;
const int maxx = 3e5+;
struct node
{
int t,b;
} a[maxx];
bool cmp(node x,node y)
{
if (x.b==y.b)
{
return x.t<y.t;
}
return x.b<y.b;
}
priority_queue<int,vector<int>,greater<int> >q;
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{ for (int i=; i<=n; i++)
{
scanf("%d%d",&a[i].t,&a[i].b);
}
sort(a+,a++n,cmp);
LL sum=;
LL ans=;
per(i,n,n-k+)
{
q.push(a[i].t);
sum+=(LL)a[i].t;
ans=max(ans,sum*a[i].b);
}
if (k<n)
{
LL num;
per(i,n-k,)
{
sum-=q.top();
sum+=(LL)a[i].t;
q.pop();
q.push(a[i].t);
num=(LL)sum*a[i].b;
ans=max(ans,num);
}
}
printf("%lld\n",ans);
}
return ;
}
Educational Codeforces Round 62 (Rated for Div. 2) - C Playlist的更多相关文章
- Educational Codeforces Round 62 (Rated for Div. 2) Solution
最近省队前联考被杭二成七南外什么的吊锤得布星,拿一场Div. 2恢复信心 然后Div.2 Rk3.Div. 1+Div. 2 Rk9,rating大涨200引起舒适 现在的Div. 2都怎么了,最难题 ...
- Educational Codeforces Round 62 (Rated for Div. 2)
A. Detective Book 题意:一个人读书 给出每一章埋的坑在第几页可以填完 . 一个人一天如果不填完坑他就会一直看 问几天能把这本书看完 思路:模拟一下 取一下过程中最大的坑的页数 如 ...
- Educational Codeforces Round 62 (Rated for Div. 2) C 贪心 + 优先队列 + 反向处理
https://codeforces.com/contest/1140/problem/C 题意 每首歌有\(t_i\)和\(b_i\)两个值,最多挑选m首歌,使得sum(\(t_i\))*min(\ ...
- Educational Codeforces Round 62 (Rated for Div. 2)C
题目链接 :C. Playlist #include<bits/stdc++.h> using namespace std; #define maxn 300005 #define LL ...
- C. Playlist Educational Codeforces Round 62 (Rated for Div. 2) 贪心+优先队列
C. Playlist time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- Educational Codeforces Round 62 (Rated for Div. 2)E(染色DP,构造,思维,组合数学)
#include<bits/stdc++.h>using namespace std;const long long mod=998244353;long long f[200007][2 ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
随机推荐
- 用TensorFlow教你手写字识别
博主原文链接:用TensorFlow教你做手写字识别(准确率94.09%) 如需转载,请备注出处及链接,谢谢. 2012 年,Alex Krizhevsky, Geoff Hinton, and Il ...
- 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手
<一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...
- IOS中armv7,armv7s,arm64以及i386和x86_64讲解
一.前言问题 在iOS 开发过程中,估计比较少的人会在意armv7,armv7s,arm64这些概念,如果在意可能也是项目中出现了像下面的问题,才会想起来解决这些问题,但还是不是特别的理解,这些概念, ...
- 【转载】网站服务器运维记实:阿里云1核2G突发性能t5服务器突然变得卡顿
阿里云突发性能服务器1核2G的t5服务器在高资源利用率的情况下运行一段时间后,发现服务器反应变得很慢,通过windows远程桌面连接上服务器后查看到CPU性能一直在90%到100%之间,无法降下来.前 ...
- [Go] golang无缓冲通道实现工作池控制并发
展示如何使用无缓冲的通道创建一个goroutine池,控制并发频率1.无缓冲通道保证了两个goroutine之间的数据交换2.当所有的goroutine都忙的时候,能够及时通过通道告知调用者3.无缓冲 ...
- 《React设计模式与最佳实践》笔记
书里的demo都是15.3.2以下版本的,有些demo用最新的react 16.x版本会报错,安装包的时候记得改一下版本 第一章 React 基础 命令式编程描述代码如何工作,而声明式编程则表明想 ...
- Selenium自动化 Xpath-元素定位
最近在教妹子做自动化测试,妹子基础差,于是想到很多初学自动化的朋友们学习的知识没有规范化,信息太过杂乱.所以,本文整理了一些自动化元素定位方式: 这次将讲Xpath定位! 什么是Xpath: Path ...
- freemark使用总结
1.下拉框中使用三元表达式: <option value="1类" ${(bean.col5!?string="1类")?string('selected ...
- loj#2531. 「CQOI2018」破解 D-H 协议(BSGS)
题意 题目链接 Sol 搞个BSGS板子出题人也是很棒棒哦 #include<bits/stdc++.h> #define Pair pair<int, int> #defin ...
- java.lang.NoSuchFieldError异常
原因就是主项目的xml文件和库项目中的xml文件 命名一样,导致库项目中的xml文件被主项目覆盖,所以库项目就找不到xml中的相关id,就报异常了. 解决方法:修改主项目中的xml文件命名,不要和 ...