#C2022D. 奶牛大亨
奶牛大亨
题目背景
题目背景可以安全跳过。 You're safe to skip this part.
作为一名OIer(或USACOer或ICPCer),自学是非常重要的品质。毕竟老师能讲的东西是有限的,而知识是无限的。
现在简要介绍这些STL该如何学习,以multiset为例:
首先先看它的定义:
std::multiset is an associative container that contains a sorted set of objects of type Key. Unlike set, multiple keys with equivalent values are allowed.
然后直接看成员函数:
选择你需要用的函数,比如我猜你需要用erase
:
你可能想问,一个函数为何有这么多种声明?到底哪个是对的?答案是:都是对的。这涉及到C++
中"多态"的概念:
multiset<int> m;
m.erase(m.begin()) //就会调用 1)
m.erase(m.begin(),m.end()) //就会调用 2)
m.erase(1) //就会调用 3)
没错,编译器根据你调用函数时传入的参数的种类、个数来调用正确的那个函数。所以相同名字的函数有很多种用法,这就是"多态"。
注意到3)
条,m.erase(x)
,会一次性删除所有的x。所以,如果你只需要删除一个x,你或许应该写m.erase(m.find(x))
注意到第三段的内容,erase
必须接受一个能解引用的迭代器,即你需要判断m.find(x)!=m.end()
来确保不会Runtime Error
。
同样,你可以找一找如何使用m.lower_bound
。
最后要提醒一点的是,cppreference(也就是上述网站)
为大家贴心地准备了例子(一般在页面的底部),一般来说编程的问题,看看例子都能解决一大部分问题。
以上内容可以学一学。And feel free to use them !
题目描述
也许会有那么一个宇宙,在那个宇宙中,我不用永远地活在我的农场之里。
Farmer John终于当上奶牛经销商了! 他有源源不断的奶牛和顾客。具体来说,在他经营的这段时间内,依次有次事件发生。每次事件要么是来了一位顾客,要么是来了一头奶牛。每支奶牛有自己的品质,每位顾客也有自己的要求。奶牛来后,会直接进入Farmer John的仓库; 顾客来后,会要求购买一头品质的奶牛,而Farmer John要么卖给他一头符合要求的奶牛,要么不卖。现在Farmer John想知道,他最多可以卖出多少头奶牛?
输入格式
输入第一行仅包含一个整数,表示事件的个数。
接下来行,每行包含两个整数,说明来了一头品质为的奶牛,说明来了一名要求为的顾客。
大千世界无奇不有,有些奶牛非常讨厌所以品质为负数,有些顾客就喜欢有个性的奶牛,所以要求也可以为负数。
输出格式
输出仅包含一个整数,表示Farmer John最多卖多少头牛。
样例
5
0 15
0 20
1 10
1 16
1 21
2
10
1 28
1 1
1 -77
0 7
0 93
1 -62
0 75
1 16
0 -28
0 8
2
数据范围
对于的数据,。
对于的数据,。
相关
在下列比赛中: