摘要: "题目链接" 题目就告诉我们要用并查集了,操作1和3用裸的带权并查集就行了, 操作2相当于将p结点从当前树中删除,再插入到q的树中,直接删除的话比较麻烦,不妨把它的“尸体”留在原来的地方,在q的树中插入一个新的点,维护一个指向编号为p点的指针即可 cpp include include includ 阅读全文
posted @ 2019-10-07 09:00 yjk 阅读(101) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 维护一个链表,以及当前位置、head、tail的指针,模拟就行了 cpp include include include using namespace std; char s[100010]; int cnt,head,tail,pos; struct Data{ char c; i 阅读全文
posted @ 2019-10-07 08:46 yjk 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 横纵坐标互不影响,所以问题转化到一维:在n个区间中每个区间选一个数,n个数都被选一次 将区间按右端点排序,枚举区间,每个区间选最靠左的没被选过的点 cpp include include include include using namespace std; const int MAXN=5010 阅读全文
posted @ 2019-10-07 08:42 yjk 阅读(102) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 不难发现,每加一个括号,就相当于把括号内一段区间中的符号反转,于是就是看n 1个符号经过k次区间反转后的状态数,用插板法搞一搞就可以了 cpp include include include using namespace std; int n,k; struct Big_int{ i 阅读全文
posted @ 2019-10-07 08:36 yjk 阅读(172) 评论(0) 推荐(0) 编辑