摘要: link #思路: 求异或的最大值容易想到01字典树,只需要再维护删除操作就好。 加一个$a$数组记录一下有多少个节点经过了这个点,删除的时候如果这是最后一个经过该点的节点,就删除他的父节点向下指的指针。用map维护一下每个数出现的次数,字典树只维护种类。 注意要先将0插入字典树,集合里没有数的时候 阅读全文
posted @ 2021-07-21 20:57 OvO1 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 问题 A: 联通数 时间限制: 1 Sec 内存限制: 128 MB 题目描述 数学高手小G最近发现了一种新型的数! 他首先在草稿纸写下任意长度的数字串kkkkkkkkkkk...(1≤k≤9)并在其中间添加加号,且相邻两个加号之间至少含有两个数字k (默认数字串第一个数字前与最后一个数字后也有两个 阅读全文
posted @ 2021-07-21 20:24 OvO1 阅读(67) 评论(0) 推荐(0) 编辑
摘要: link 思路: 先来想想暴力的写法: $n^{2}$枚举左上角的顶点,$k^{2}$求最小值。 考虑优化: $1.$答案有单调性,可以二分答案,省去枚举左上角顶点的复杂度。 $2.$每次$check$的时候,将大于该数的设为$1$,小于该数的设为$0$,这样就可以在$k^{2}$枚举的时候用二维前 阅读全文
posted @ 2021-07-21 17:44 OvO1 阅读(58) 评论(0) 推荐(0) 编辑
摘要: link #思路: 两种操作,求和与异或。 考虑将数拆成二进制,维护每一位的值。 用线段树进行区间修改和区间求和。 空间卡的很紧,注意求和用long long存 #代码: #include<bits/stdc++.h> using namespace std; typedef long long l 阅读全文
posted @ 2021-07-21 17:24 OvO1 阅读(60) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<ll, ll>PLL; typedef pair<int, int>PII; 阅读全文
posted @ 2021-07-21 14:42 OvO1 阅读(75) 评论(0) 推荐(0) 编辑
摘要: link #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<ll, ll>PLL; typedef pair<int, int 阅读全文
posted @ 2021-07-21 11:48 OvO1 阅读(34) 评论(0) 推荐(0) 编辑