题目大意:给定一个【魞歄连通图】,多次询问当图中某k条边消失时这个图是否联通 强制在线
我们找到这个图的任意一棵生成树 然后对于每条非树边将其的权值赋为一个随机数
对于每条树边 我们将这条树边的权值设为所有覆盖这条树边的边权的异或和
那么图不连通当且仅当删除一条树边和覆盖这条树边的所有边集 而由于刚才的处理一条树边和覆盖这条边的所有边集的异或和为零
于是问题转化成了对于给定的k条边是否存在...
分类:
其他好文 时间:
2014-12-11 15:59:50
阅读次数:
206
3261: 最大异或和Time Limit: 10 SecMemory Limit: 512 MBSubmit: 543Solved: 237[Submit][Status]Description给定一个非负整数序列 {a},初始长度为 N。 有 M个操作,有以下两种操作类型:1 、A x:添加操作...
分类:
其他好文 时间:
2014-12-04 19:50:41
阅读次数:
242
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5119分析:dp[i][j]表示由前i个数组成异或和为j的方法数,则dp[i][j]=d[i-1][j^a[i]]+dp[i][j]; 边界:dp[0][0]=1,其他为0;复杂度40*1e6#inclu...
分类:
其他好文 时间:
2014-11-29 18:58:07
阅读次数:
150
题目大意:给定一些箱子,每个箱子里有一些石子,两个人轮流操作,每个人可以进行以下操作之一:
1.打开任意多的箱子
2.从一个打开的箱子中拿走任意多的石子
不能操作者判负,求先手是否必胜
先手必胜的状态为:给出的数字集合存在一个异或和为零的非空子集,则先手必胜
证明:
首先我们有状态A:当前的所有打开的箱子中的石子数异或和为零,且所有关闭的箱子中的石子数的集合中不存在一个异或和为零的非空...
分类:
其他好文 时间:
2014-11-26 21:00:24
阅读次数:
165
叶子节点的SG值为0 非叶子节点的SG值为为它的所有子节点的SG值加1 后的异或和
#include
#include
#include
using namespace std;
vector G[100010];
int sg[100010];
int dfs(int x, int f)
{
if(sg[x] != -1)
return sg[x];
if(!G[x].size...
分类:
其他好文 时间:
2014-11-20 15:25:46
阅读次数:
200
/*
题意:还是二进制异或,和poj3678类似
建边和poj3678一样
*/
#include
#include
#include
#define N 2100
struct node{
int v,next;
}bian[N*N];
int head[N],dfn[N],low[N],vis[N],stac[N],belong[N],yong,ans,index,top;
void init...
分类:
其他好文 时间:
2014-11-09 13:58:58
阅读次数:
236
题意:一棵树n个结点,每条边有0.1两种权值,每次询问权值为奇数的路径数目,或者改变某一条边的权值。分析:这个题目很巧妙低利用了异或和的特性,dfs得到每个点到根结点的权值异或和,然后奇数则为1,偶数为0,异或和为0和1的点组成的路径权值和一定为奇数,询问结果就是0个数和1个数乘积2倍。代码: 1....
分类:
其他好文 时间:
2014-10-24 00:13:47
阅读次数:
147
题目大意:给定一个序列,多次询问[l,r]中最大子序异或和 强制在线
一直RE的同学注意,本题的强制在线如果直接加会爆int导致调用数组下标为负
首先我们有一个转化 维护前缀异或和数组a[] 那么[l,r]中最大子序异或和就是a数组中[l-1,r]中任取两个数的最大异或值
然后分块处理 对于每块的第一个数a[i] 我们依次处理出对于所有的j>=i的[i,j]中的最大异或值 即s[i][j]=...
分类:
其他好文 时间:
2014-10-21 10:23:24
阅读次数:
345
题意:有一个无向图,边带权,从点1开始,每次随机选择与这个点相邻的一条边走到另一个点,直到走到点n.权值为所有走过的边的异或和(若一条边经过多次则被异或多次),求权值的期望值。
思路:将每一位拆开。那么相当于边上的权值只有0,1.
由于到达n就立即停止,我们定义f[i]表示从i到达n的期望值。
那么显然f[n]=0,对于i!=n,我们列出其转移方程:
for all x near ...
分类:
其他好文 时间:
2014-10-17 12:08:39
阅读次数:
238
题目大意:给定一个序列,提供下列操作:
1.在数组结尾插入一个数
2.给定l,r,x,求一个l
首先我们可以维护前缀和 然后就是使x^sum[n]^sum[p-1]最大
x^sum[n]为定值,于是用Trie树贪心即可
考虑到l-1
每个区间[l,r]的Trie树为tree[r]-tree[l-1]
注意0要插入一个数字0,所以把-1作为空节点,然后把数组向前推进一位即可
#inc...
分类:
其他好文 时间:
2014-10-14 11:13:48
阅读次数:
206