线性基
meopass
即使摸爬滚打,满身泥泞,我也要前进
展开
-
BZOJ 2115 线性基
简略题意:你需要找到一条从11到nn的路径,使得这条路径上的亦或和最大。这题和HDU5544本质相同。 首先考虑对于图上的一个环,那么从11走到环,然后回到11,这条路径的答案显然就是这个环的答案,因此预处理出每个环代表的数,就相当于从nn个数选取kk个数,使得答案的值尽可能变大。 不考虑环的话,我们随意找一条从11到nn的简单路径,当这条路径就是答案路径的时候,显然答案最大。如果我们找到的不是原创 2017-09-07 11:54:34 · 390 阅读 · 0 评论 -
BZOJ2460 线性基
简略题意:nn个物品,每个物品两个权值。 1.1. 编号 2.2. 价值 现在需要选出若干个物品,使得他们的编号亦或和不为00,且价值最大。线性基中任意元素的亦或值均不为00,因此只要按价值从大到小构造线性基,然后把所有的线性基对应的价值求和即可。#include <bits/stdc++.h>using namespace std;typedef long long LL;const in原创 2017-09-07 14:13:42 · 296 阅读 · 0 评论 -
HDU5544 线性基
简略题意:在一张图上,从任意位置出发,回到这个位置,走过的路径的亦或和最大是多少。和BZOJ2115这题基本一致,只是少了一个初值。BZOJ2115#include <bits/stdc++.h>#define maxn 110000#define LL long long//#define debugusing namespace std;vector<pair<int, LL>>G[ma原创 2017-09-07 14:16:37 · 687 阅读 · 0 评论 -
线性基
1. 什么是线性基? 线性基是一组基”a[1],a[2]...a[n]a[1], a[2] ... a[n]”,a[i]中数的最高位为ia[i]中数的最高位为i,从原数组构造而来,且这一组基相互亦或组成的值域和原数组中的数相互亦或得到的值域相同。2. 如何构造线性基vector<LL> base;for(auto it : ans) { LL t = it; for(auto v原创 2017-09-07 11:43:02 · 379 阅读 · 0 评论 -
codeforces 895C Square Subsets 线性基 或 状压DP
简略题意:n个数,问有多少选择的方法能够使得这些数的乘积变成完全平方数。经典问题加强数据范围并不会把每个数唯一分解之后,用其质因子以及其对应的幂来表示这个数。如果若干个数乘积想要位完全平方数,那么势必要使得相乘后的每一个质数的幂为偶数。那么我们选择这个数的时候只需要在意他的所有质因子的幂次的奇偶性即可。因为数的大小只有70,至多只会有19种质因子,可以状态压缩。因此如果一个数的质因子的幂次为奇数,就原创 2017-11-27 06:24:30 · 466 阅读 · 0 评论