题解:我的做法是这样的:动态维护线性基,当线性基的个数达到n的时候就有唯一解。自己yy了bitset,好像有点儿慢。。。注意bitset上的位和int上的位差不多。不过从0位开始。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6... Read More
题解:注意到我们高斯消元后,如果有k个不为0的数,那么它们线性无关,就像基底一样,那么2^k个选法必然有2^k个不同的数。然后我们从大到小直接统计就行了。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #... Read More
题解:线性基?类似于向量上的基底。此题题解戳这里:http://blog.csdn.net/wyfcyx_forever/article/details/39477673代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #inc... Read More
for(i=1;ia[i]) swap(a[i],a[j]); if(!a[i]) break; for(j=60;j>=0;j--) if(a[i]>>j&1) { for(k=1;k>j&1)) a[k]^=a[i]; break; }}对着这个代码思(... Read More
题解:n个元素的子集的最大异或和我居然理解了一星期 T_T lyd讲解坑死人。。。http://sujinyue.is-programmer.com/posts/42663.html这里解决了我的所有疑问。所谓线性基就是原数组所能xor出的一切数这个线性基都能xor出来,不多不少。为什么可以呢?我们... Read More
题解:如果第一行的数知道了,我们就可以推出其他行的数。那么如何判断第一行的数的一种填法是否合法呢?很简单,我们递推出m+1行的数,当且仅当这一行都是0时满足题意。那么,我们就有了一种想法。直接把m+1行的每个数用x[1..n]表示出来,这一定是个系数只为0/1的式子。然后让这个异或值=0,就可以解异... Read More
题解:会了消耗战之后,这题的难点就只在统计ans了。我原来求最长(短)链只会保留次优值,然后开三个数组写得特别麻烦。。。今天学习了,orz POPOQQQ inline void dfs(int x) { f[x]=v[x];g[x]=0; mi[x]=v[... Read More