<题目链接>

题目大意:

就是一道纯模拟题,具体模拟过程见代码。

解题分析:
要掌握不同优先级的优先队列的设置。下面是对优先队列的使用操作详解:

priority_queue<int>q 默认为大顶堆。

priority_queue<int, vector<int>, less<int>> 大顶堆:表示其他都比堆顶小
priority_queue<int, vector<int>, greater<int>> 小顶堆:表示其他都比堆顶大

结构体设置优先级:

只可在结构体内部重载小于号。

两种重置用法:

  • 运算符重载 + 友元
struct fruit
{
string name;
double price;
friend bool operator< (fruit f1, fruit f2)
{
return f1.price < f2.price; // 相当于less,这是大顶堆,反之则是小顶堆
}
} f1, f2, f3; //定义三个结构体变量 这样直接可以:
`priority_queue<fruit > q;
  • 比较运算符外置
struct fruit
{
string name;
double price;
} f1, f2, f3; //定义三个结构体变量 struct cmp
{
bool operator () (fruit f1, fruit f2) // 重载括号
{
return f1.price < f2.price; // 等同于less
}
};

调用语法是:

priority_queue<fruit,vector<fruit> , cmp > q;

这个和基本类型的用法就相似了,只不过是用cmp代替了less或者greater

 

下面是本题代码:

#include <cstdio>
#include <cstring>
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std; #define ll long long int main(){
int n,m;
scanf("%d%d",&n,&m);
int arr[350];
for(int i=1;i<=n;i++){
scanf("%d",&arr[i]);
}
priority_queue<ll,vector<ll> ,greater<ll> >q; //将该优先队列设为小顶堆
for(int i=1;i<=m;i++){
q.push(arr[i]);
}
ll b[350];int cnt=0;
b[++cnt]=q.top();q.pop(); //挑取刚开始m个中的最小的
for(int i=m+1;i<=n;i++){
q.push(arr[i]); //将后面没有读过的依次加入
b[++cnt]=b[cnt-1]+q.top(); //按照题目要求算出每次的值
q.pop();
}
while(q.size()){ //将剩下的所有没读过的全部读完
b[++cnt]=b[cnt-1]+q.top();
q.pop();
}
ll sum=0;
for(int i=1;i<=cnt;i++){
sum+=b[i];
}
printf("%lld\n",sum);
return 0;
}

  

2018-09-15

Codeforces Gym 101291C【优先队列】的更多相关文章

  1. Codeforces Gym 101252D&&floyd判圈算法学习笔记

    一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1. 题解:都不到100天就AFO了才来学这floyd判圈 ...

  2. Codeforces Gym 101190M Mole Tunnels - 费用流

    题目传送门 传送门 题目大意 $m$只鼹鼠有$n$个巢穴,$n - 1$条长度为$1$的通道将它们连通且第$i(i > 1)$个巢穴与第$\left\lfloor \frac{i}{2}\rig ...

  3. Codeforces Gym 101623A - 动态规划

    题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求划分成最少的段数,然后将这些段排序使得新序列单调不减. 考虑将相邻的相等的数缩成一个数. 假设没有分成了$n$段,考虑最少能够减少多少划分 ...

  4. 【Codeforces Gym 100725K】Key Insertion

    Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...

  5. Codeforces gym 101343 J.Husam and the Broken Present 2【状压dp】

     2017 JUST Programming Contest 2.0 题目链接:Codeforces gym 101343 J.Husam and the Broken Present 2 J. Hu ...

  6. codeforces gym 100553I

    codeforces gym 100553I solution 令a[i]表示位置i的船的编号 研究可以发现,应是从中间开始,往两边跳.... 于是就是一个点往两边的最长下降子序列之和减一 魔改树状数 ...

  7. CodeForces Gym 100213F Counterfeit Money

    CodeForces Gym题目页面传送门 有\(1\)个\(n1\times m1\)的字符矩阵\(a\)和\(1\)个\(n2\times m2\)的字符矩阵\(b\),求\(a,b\)的最大公共 ...

  8. Codeforces GYM 100876 J - Buying roads 题解

    Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...

  9. codeforces Gym 100187J J. Deck Shuffling dfs

    J. Deck Shuffling Time Limit: 2   Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/pro ...

随机推荐

  1. Confluence 6 附件存储文件系统的分级

    从 Confluence 3.0 开始,附件的存储方式有了重大的改变和升级.如果你是从 Confluence 2.10 及其早期版本升级上来的,请参考 Upgrading Confluence 页面中 ...

  2. python - 发送html格式的邮件

    import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom ...

  3. application program Can't Start

    一.电脑插U盘中毒之后感染,出现无法启动,但是风扇工作,先拔掉电源,卸掉电池之后重新安装,重启电脑,之后发现电脑桌面上的程序无法启动,360webShield也无法启动,可能是电脑中毒后的假死机现象. ...

  4. 爬虫----beautifulsoup的简单使用

    beautifulSoup使用: 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据. pip3 install beautifulsoup4 解析器 Beau ...

  5. queryset优化 。。。。。exists()与iterator()方法

    exists()方法!! 判断queryset是否有值存在.exists()    只会查询一个字段 .正常会查所有!!! iterator()方法 objs = Book.objects.all() ...

  6. 雅礼 noip2018 模拟赛day3 T2

    典型的状压思想 设0表示黑球,1表示白球,用一串01序列代表剩下的球的状态,记f[i]表示在i状态下取球的最大期望 那么可以利用记忆化搜索更新,每一层枚举可能拿走的球然后向下搜索,同时记忆化即可 在状 ...

  7. npm 如何查看一个包的版本信息?

    转载. https://blog.csdn.net/cvper/article/details/79543262 有了npm 我们能够简单的一段代码就下载我们需要的包,但是包是不断更新的, 所以我们要 ...

  8. Python元组(tuple)

    元组(tuple)是Python中另一个重要的序列结构,与列表类型,也是由一系列按特定顺序排列的元素组成,但是他是不可变序列.在形式上元组的所有元素都放在"()"中,两个元素使用& ...

  9. Python笔记记录

    python2和python3的不同: Unicode(统一码.万国码),在3里面可以直接写中文了. python2里rae_input与python3中的input效果一样 在计算机内存中,统一用U ...

  10. Php7有哪些新特性:

    PHP7在PHP5的基础上又做了一次质的提升,当然改变很多,我这里以我的总结简单说下,主要发生了下面这些更改: 移除了一些旧的特性 ZEND引擎升级到Zend Engine 3,也就是所谓的PHP N ...