CF888G XOR-MST 最小异或生成树】的更多相关文章

CF888G XOR-MST 链接 CF888G 思路 trie上贪心,先左右两边连边,再用一条边的代价连起左右两颗树.因为内部的边一定比跨两棵树的边权笑,显然是对的. 代码自己瞎yy的.启发式合并 代码 #include <bits/stdc++.h> #define ll long long using namespace std; const int _=2e5+7; int n,a[_],ch[_*30][2],siz[_*30],cnt,col,rt[_*30]; ll ans; s…
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  给你n个坐标,求最小曼哈顿距离生成树. Solution:  请一定要理解:  有一个剪枝:把坐标分成\(8\)块,在一个\(45\)度区间内,只需要向与之距离最近的点连边.  虽然一共有\(8\)个相对区域,但我们只需考虑\(4\)个,中心对称的不需要再连一次边.这\(4\)个区域坐标转化一下即可求解.  先考虑每个点\…
题意: N个点,M条边.每条边连接两个点u,v,且有一个权值c,c非零即一. 问能否将N个点形成一个生成树,并且这棵树的边权值和是一个fibonacii数. (fibonacii数=1,2,3,5,8 .... ) 思路: 若可以生成一棵树.则有最小生成树和最大生成树.假设已经生成了最小MST  P 和最大MST  Q. 将P更换一条边可以得到另一棵生成树,边权和不是和P相等就是比P的边权和大1.(因为边值非零即一).同理搞下去....一定可以得到Q. 所以P的边权和到Q的边权和之间的所有值都能…
题意:若干个人开车要去park聚会,可是park能停的车是有限的,为k.所以这些人要通过先开车到其它人家中,停车,然后拼车去聚会.另外,车的容量是无限的,他们家停车位也是无限的. 求开车总行程最短. 就是求一最小生成树,可是对于当中一个点其度不能超过k. 思路: 1. 将park点取出 将剩下的点求出最小生成树  出现i个联通块 2. 再每一个块中选择与park点相邻的最小边 到此park点已经连了i条边 park点最大能够连接k个点 得到Sum值 3. 须要求出i+1-->k 条的Sum值 每…
题目链接:https://atcoder.jp/contests/abc121/tasks/abc121_d 题目很裸(Atcoder好像都比较裸 就给一个区间求异或和 n到1e12 肯定不能O(n)推 那肯定得通过异或的一些性质 用$f\left( a,b\right)$表示[a,b]区间的异或和 我只观察出了$f\left( 2^{a},2^{b}-1\right)$的异或和肯定为0. 通过$f\left( 2^{a},2^{a+1}-1\right)$每一位都会出现偶数次 例如 [4,8)…
1295 XOR key 2 秒 262,144 KB 160 分 6 级题   给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R).求A[L] 至 A[R] 这R - L + 1个数中,与X 进行异或运算(Xor),得到的最大值是多少? 收起   输入 第1行:2个数N, Q中间用空格分隔,分别表示数组的长度及查询的数量(1 <= N <= 50000, 1 <= Q <= 50000). 第2 - N+1行:每行1个数,对…
Codeforces 979 D. Kuro and GCD and XOR and SUM 题目大意:有两种操作:①给一个数v,加入数组a中②给出三个数x,k,s:从当前数组a中找出一个数u满足 u与x的gcd可以被k整除,u不大于s-x,且与x的异或和最大. 思路:之前没有碰到过异或和最值的问题,所以是懵逼的.学习了01字典树后把这题补出来. 碰到操作①就上树,上树过程中注意不断维护每个节点往后路径中的最小值(具体见代码细节): 碰到操作②,如果k==1,那么从树上找数的同时注意限制条件最小…
Xor Sum 题目链接(点击) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total Submission(s): 6182    Accepted Submission(s): 2683 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Promet…
<题目链接> 题目大意: 给出n.m,现在需要你输出任意n个不相同的数(n,m<1e5),使他们的异或结果为m,如果不存在n个不相同的数异或结果为m,则输出"NO",本题中所有数均需小于1e6. 解题分析:因为本题是SPJ,且当n比较大的时候,需要输出很多数,所以我们试着去构造这n个数,力图找出一些规律.n<=2的时候很好直接进行特判即可.n>=3的时候,可以直接进行简单的构造,比如前面n-1项依次设为1,2,3,……(下面假设前面这些连续的项异或结果为r…
题意: 给出一个矩阵n(<=500)*m(<=500)每一行任选一个数 异或在一起 求一个 异或在一起不为0 的每行的取值列号 思路: 异或的性质  交换律 x1^x2^x3==x3^x2^x1 可以任意换位置  并且 x1^x2==x3^x4  等于 x1^x2^x3==x4 可以任意换位置 所以等于零时有  x1^x2^x3^x4==0  (x1^x2)^(x3^x4)==0  x1^x2==x3^x4 都可以任意结合 所以本题只要任意选择列  如果为0  就每一列 找与已选择的列不一样的…