[HNOI2002]营业额统计
stl::set
题解:
就是一边插入一边找前驱和后继。
直接set就行了。
Code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;
const int INF = 0x3f3f3f3f;
set<int> s;
set<int>::iterator p;
int main(){
int ans=0,n,x,a;
cin>>n;
cin>>a; s.insert(a); ans+=a;
for(int i=2;i<=n;i++){
x=INF; cin>>a;
p=s.lower_bound(a);
if(p!=s.end()){ x=min(x,*p-a); }
if(p!=s.begin()){ x=min(x,a-(*--p)); }
ans+=x; s.insert(a);
}
cout<<ans<<endl;
}
本文提供了一道HNOI2002竞赛题“营业额统计”的解决方案,采用C++语言实现,利用STL set进行数据处理。通过在set中查找每个元素的前驱和后继来解决最小差值问题。
553

被折叠的 条评论
为什么被折叠?



