BZOJ 1208 HNOI 2004 宠物收养所 STL set 应用
2012-03-24 11:03
423 查看
题目链接:http://www.zybbs.org/JudgeOnline/problem.php?id=1208
不知到题意和不会思路的另搜吧...本文只是为了STL的set练手而已。
这题查找的时候没用find(),而是用了pair和equal_range()。感觉这样写会比较方便,因为需要找最近的值。
代码(不到30行^_^):
View Code
运行内存940KB 时间212MS
看来STL的可用性还是不错的,速度与手写的平衡数差距不大。
不知到题意和不会思路的另搜吧...本文只是为了STL的set练手而已。
这题查找的时候没用find(),而是用了pair和equal_range()。感觉这样写会比较方便,因为需要找最近的值。
代码(不到30行^_^):
View Code
#include<cstdio> #include<cstdlib> #include<set> using namespace std; set<int>s; int x,y,n,kind,ans=0; int main() { scanf("%d",&n);s.clear(); for (int i=1;i<=n;i++) { scanf("%d%d",&x,&y); if (x==kind || !s.size()) kind=x,s.insert(y); else { pair<set<int>::iterator,set<int>::iterator>p=s.equal_range(y); if (p.first==p.second) { if (p.first!=s.begin()) p.first--; if (abs(y-*p.first)<=abs(y-*p.second)) ans+=abs(y-*p.first),s.erase(p.first); else ans+=abs(y-*p.second),s.erase(p.second); } else s.erase(p.first); ans%=1000000; } } printf("%d\n",ans); return 0; }
运行内存940KB 时间212MS
看来STL的可用性还是不错的,速度与手写的平衡数差距不大。
相关文章推荐
- BZOJ 1208: [HNOI2004]宠物收养所 平衡树/set
- bzoj 1208: [HNOI2004]宠物收养所
- bzoj1208【HNOI2004】宠物收养所
- [BZOJ1208][[HNOI2004]宠物收养所][STL set+二分]
- bzoj 1208: [HNOI2004]宠物收养所
- bzoj 1208: [HNOI2004]宠物收养所 stl
- [BZOJ1208][HNOI2004]宠物收养所(平衡树splay)
- BZOJ1208: [HNOI2004]宠物收养所 Splay
- [BZOJ1208][HNOI2004]宠物收养所(平衡树splay)
- BZOJ 1208: [HNOI2004]宠物收养所 SET的妙用
- BZOJ1208: [HNOI2004]宠物收养所
- bzoj 1208: [HNOI2004]宠物收养所
- bzoj1208: [HNOI2004]宠物收养所
- BZOJ 1208: [HNOI2004]宠物收养所
- 【权值分块】bzoj1208 [HNOI2004]宠物收养所
- Bzoj1208 [HNOI2004]宠物收养所
- 【BZOJ1208】【HNOI2004】宠物收养所
- [BZOJ1208] [HNOI2004] 宠物收养所 - splay
- BZOJ1208: [HNOI2004]宠物收养所
- BZOJ1208: [HNOI2004]宠物收养所