这个sb题目,剧毒。。。
首先,我准备用经典的线段树优化扫描线来做。之前的矩形周长把我困了数天导致我胸有成竹。
然后,敲代码半小时,调试半个月......这个,sb,怎么改都是0分+2个RE...
然后我爆炸了,请胡雨菲来帮忙。他还是提议我用set做。然后就set了...
跑的贼慢,不过90分,第八个点日常RE...
但是了解了一点set的用法,让我慢慢道来(嘿)
首先,可以看这个博客。
我自己的理解:
1,这是一种功能有限的搜索树。
2,它有序,资瓷插入删除,但是缓慢
3,这东西是返回指针的。
然后,反正这个set很naive就是了。
看下面一段代码:
1 #include <cstdio>
2 #include <set>
3 using namespace std;
4 set<int>s;
5 int main()
6 {
7 s.insert(22);
8 s.insert(24);
9 s.insert(32);
10 s.insert(15);
11 printf("%d\n",*s.end());
12 printf("%d\n",*s.rbegin());
13 return 0;
14 }
输出:
4
32
好,大致理解了吧。
1 #include <cstdio> 2 #include <set> 3 using namespace std; 4 set<int>s; 5 int main() 6 { 7 s.insert(22); 8 s.insert(24); 9 s.insert(32); 10 s.insert(15); 11 set<int>::iterator iter; 12 for(iter=s.begin();iter!=s.end();iter++) printf("%d ",*iter); 13 printf("\n"); 14 s.erase(24); 15 for(iter=s.begin();iter!=s.end();iter++) printf("%d ",*iter); 16 s.erase(s.find(22)); 17 printf("\n"); 18 for(iter=s.begin();iter!=s.end();iter++) printf("%d ",*iter); 19 return 0; 20 }