博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小明的账单
阅读量:6262 次
发布时间:2019-06-22

本文共 1465 字,大约阅读时间需要 4 分钟。

题目描述:

小明在一次聚会中,不慎遗失了自己的钱包,在接下来的日子,面对小明的将是一系列的补卡手续和堆积的账单。

在小明的百般恳求下,老板最终同意延缓账单的支付时间。可老板又提出,必须从目前还没有支付的所有账单中选出面额最大和最小的两张,并把他们付清。还没有支付的账单会被保留到下一天。
请你帮他计算出支付的顺序。

 

输入:

第1 行:一个正整数N(N≤15,000),表示小明补办银联卡总共的天数。

第2 行到第N+1 行:每一行描述一天中收到的帐单。先是一个非负整数M<=100,表示当天
收到的账单数,后跟M个正整数(都小于1,000,000,000),表示每张帐单的面额。
输入数据保证每天都可以支付两张帐单。

 

输出:

输出共N 行,每行两个用空格分隔的整数,分别表示当天支付的面额最小和最大的支

票的面额。

 

样例输入:

4

3 3 6 5
2 8 2
3 7 1 7
0

 

样例输出:

3 6

2 8
1 7
5 7

这是一道典型的用STL模板的题,其实用set或multi set都还好啦(甚至还有用queue或者stack的),现下代码,然后解释解释emmm:

#include
#include
#include
#include
using namespace std;multiset
q;long long n;long long m,a[100];int r,t;int main(){scanf("%lld",&n);for(int i=1;i<=n;i++){ scanf("%lld",&m); for(int i=1;i<=m;i++) { scanf("%lld",&a[i]); q.insert(a[i]); } r=*q.begin(); t=*(--q.end()); printf("%d %d\n",r,t); q.erase(q.begin()); q.erase((--q.end()));}return 0;}

不开longlong见祖宗……

这里我用的是multi set啊!主要是利用它能erase一个数,这个还是很方便的;这里要注意r=*q.begin(),其实会想问:哎呀,中间的“ * ”啥意思啊。因为这里的begin或者end操作是取地址的(包括迭代器),所以要使r和t有实际意义的值,就必须加个取值符( * ),切记切记啊。
另外set和multi set的区间都是左闭右开,所以t=*(--q.end())和q.erase((--q.end()))要把它-1操作,目的是取到它整个数列的最后一位。、

set&&multiset(集合)

这俩有啥区别呢:
set是存入的元素是不能重复的,
multiset是存入的元素是可以重复的。
是不是感觉这两个板特别有用啊,再给几个操作吧:

set <int> s;

s.insert();
s.erase();
s.size();
s.empty();

所以set和multiset是很牛逼的,好好学吧!!!

转载于:https://www.cnblogs.com/Zhoier-Zxy/p/8075523.html

你可能感兴趣的文章
EntityFramework之一对一关系(二)
查看>>
我心中的核心组件(可插拔的AOP)~调度组件quartz.net续~任务管理器的开发(CronTrigger强大功能)...
查看>>
Html2Text
查看>>
spring boot + mybatis实现一对一,一对多的样码之一种
查看>>
Android OpenGL ES 应用(二) 纹理
查看>>
谈谈D2
查看>>
解决li在ie,firefox中行高不一致问题
查看>>
[译] OpenStack Liberty 版本中的53个新变化
查看>>
How to mount usb device in CentOS?
查看>>
机器学习中的贝叶斯方法---当后验分布无法计算时如何求得预测模型?
查看>>
Kali无法定位软件包的解决方案
查看>>
Webwork 学习之路【01】Webwork与 Struct 的前世今生
查看>>
串口调试问题 【转】
查看>>
利用客户端缓存对网站进行优化
查看>>
Elasticsearch之head插件安装之后的浏览详解
查看>>
zabbix监控-基本原理介绍
查看>>
循环神经网络(RNN)模型与前向反向传播算法
查看>>
使用bash编写Linux shell脚本--参数和子壳
查看>>
现代软件工程讲义 5 项目经理 Program Manager
查看>>
DotNet语音技术实现(实现电脑发音)
查看>>