建设网站去哪里备案,网站开发合理性是什么意思,做网站和管理系统,房子网站有哪些题目传送门 嗯#xff0c;这道题的标签是STL#xff0c;因为这个STL用的确实太妙了 这道题目要求维护一堆区间#xff0c;而一个重要的操作是要删除所有与新区间冲突的区间 虽然可以用\(Splay\)来操作#xff0c;但用STL里的set也绝对不虚 其中最精妙的当属这个重载运算符 …题目传送门 嗯这道题的标签是STL因为这个STL用的确实太妙了 这道题目要求维护一堆区间而一个重要的操作是要删除所有与新区间冲突的区间 虽然可以用\(Splay\)来操作但用STL里的set也绝对不虚 其中最精妙的当属这个重载运算符 它的意思是当两个区间相交时这两个区间相等 struct zzz {int l, r;bool operator (const zzz y) const { return r y.l; }
}; set zzz q; 重载完运算符再凭借set的find函数就可以很容易的通过此题 #include iostream
#include cstdio
#include cstring
#include algorithm
#include set
#define LL long long
using namespace std;
LL read() {LL k 0; char c getchar();while(c 0 || c 9) c getchar();while(c 0 c 9)k k * 10 c - 48, c getchar();return k;
}
char read_c() {char c getchar();while(c ! A c ! B) c getchar();return c;
}
struct zzz {int l, r;bool operator (const zzz y) const { return r y.l; }
}; set zzz q;
int main() {int m read();while(m--) {char opt read_c();if(opt A) {int l read(), r read(), cnt 0;zzz k (zzz){l, r};setzzz :: iterator it q.find(k);//将相交的区间全都删去while(it ! q.end()) {cnt; q.erase(it);it q.find(k);}q.insert(k);printf(%d\n, cnt);}else printf(%d\n, q.size());}return 0;
} 转载于:https://www.cnblogs.com/wxl-Ezio/p/11011374.html