摘要:
题目传送门题意:给一些对集合的操作,询问每一次操作后栈顶的集合元素个数分析:首先{}是空的,每一次add时候,{} -> { {} }变成了有一个元素的集合,利用set和stack,map容器能很方便解决这道题。 if (!mp[s1]) mp[s1] = ++cnt; ... 阅读全文
摘要:
题目传送门题意:题意坑爹。问符合条件的的山顶个数分析:降序排序后从每个点出发,假设为山顶,如果四周的点的高度>h - d那么可以走,如果走到已经走过的点且染色信息(山顶高度)不匹配那么就不是山顶。重点在于就算知道不是山顶也要染色完。#include using namespace std;const... 阅读全文
摘要:
题目传送门题意:给一些传感器,范围在r内,再给一些询问点,问这些点能有几个传感器收到,当有墙隔绝时信号减弱,范围变小分析:set存储传感器,用set的find来查找是否是传感器。因为询问点少,可以枚举询问点的r的范围的所有整数点,+线段相交新模板:)#include using namespace ... 阅读全文
摘要:
题目传送门题意:训练指南P246分析:主要是第二种操作难办,并查集如何支持删除操作?很巧妙的方法:将并查集树上p的影响消除,即在祖先上(sz--, sum -= p),然后为p换上马甲:id[p] = ++pos(可多次),这样id[p]就相当于是新的一个点,那么在Find(x)寻找祖先时要用x的马... 阅读全文
摘要:
题目传送门题意:训练指南P245分析:首先这道是经典的并查集题目,利用异或的性质。异或性质:x ^ 0 = x -> a ^ a = 0 -> x ^ a ^ a = x,即一个数对某个数异或偶数次等于它本身。第一种操作:p = v,设立一个超级根节点RT,rt[p] = RT, edge[p] =... 阅读全文
摘要:
题目传送门题意:训练指南P245分析:set维护,查询删除最大最小值#include using namespace std;typedef long long ll;int main(void) { int n; multiset S; while (scanf ("%d", ... 阅读全文
摘要:
题目传送门题意:训练指南P244分析:链表模拟,维护链表的head和tail指针#include using namespace std;const int N = 1e5 + 5;struct Link_list { char ch; Link_list *nex;}link_l... 阅读全文