bzoj2303】的更多相关文章

[BZOJ2303][Apio2011]方格染色 试题描述 Sam和他的妹妹Sara有一个包含n × m个方格的 表格.她们想要将其的每个方格都染成红色或蓝色. 出于个人喜好,他们想要表格中每个2 ×   2的方形区 域都包含奇数个(1 个或 3 个)红色方格.例如,右 图是一个合法的表格染色方案(在打印稿中,深色代 表蓝色,浅色代表红色) . 可是昨天晚上,有人已经给表格中的一些方格染上了颜色!现在Sam和Sara 非常生气.不过,他们想要知道是否可能给剩下的方格染上颜色,使得整个表格 仍然满…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2303 题意概括 现在有一个N*M矩阵,矩阵上只能填数字0或1 现在矩阵里已经有一些格子被填写了数字,询问是否存在一种填写方案使得「任意一个2*2的矩阵异或和为1」,输出方案总数 题解 我们发现当我们已经确定(1,1)的颜色为1的时候: 我们知道c(i,j). 那么如果i和j都是偶数,那么就有c(1,1)^c(i,1)^c(1,j)^c(i,j)==1 否则就是0. 因为假设s(i,j)表示以i,…
比较难想到的是将题目中的要求看做异或.那么有ai,j^ai+1,j^ai,j+1^ai+1,j+1=1.瞎化一化可以大胆猜想得到a1,1^a1,j^ai,1^ai,j=(i-1)*(j-1)&1.也就是说,确定第一行和第一列的颜色,就可以确定整个矩阵.现在如果没有已填的格子的限制,答案就是2n+m-1. 然后考虑已填格子.假设固定了a1,1,那么其影响到的就是a1,j和ai,1.即要求两者相同或不同.于是可以把每个格子的染色情况拆成两个点,根据已填格子将其连边,同一连通块内的点只要选择一个就必须…
这题太神了 首先我们可以发现只有当i和j都是偶数时a[1][1]^a[1][j]^a[i][1]^a[i][j]=1才满足情况,其它时都为0 所以我们可以先把i和j都为偶数的地方^1变为0 下面才是最牛逼的地方,并查集的应用在这里体现的淋漓尽致. 0表示相同 1表示不同 一开始赋初值都表示为相同 然后每次更新并查集时只要更新他到根所有的数异或起来就是他与根的关系 由于根的g一定为0,所以此时得到的还有它实际应该是多少 我们假设一种比较复杂的情况 我们只有a[1][j]^a[i][1]^a[i][…
Description Sam和他的妹妹Sara有一个包含n × m个方格的表格.她们想要将其的每个方格都染成红色或蓝色.出于个人喜好,他们想要表格中每个2 × 2的方形区域都包含奇数个(1 个或 3 个)红色方格.例如,右图是一个合法的表格染色方案(在打印稿中,深色代表蓝色,浅色代表红色) . 可是昨天晚上,有人已经给表格中的一些方格染上了颜色!现在Sam和Sara非常生气.不过,他们想要知道是否可能给剩下的方格染上颜色,使得整个表格仍然满足她们的要求.如果可能的话,满足他们要求的染色方案数有…
并查集+数学 这道题网上好像有两种解法. 这位写的很可读:http://blog.csdn.net/unicornt_/article/details/51901225 然后看完大概就懂了做法,但是实现上还有很多细小的地方. cnt要-1,因为第一行和第一列会算两次. 数组要开四倍. 至于为什么要拆成两个点,这是因为分开考虑01. 为什么两个flag都要赋值?因为有可能根是放在列上了,就判不到了. 还需要思考一下. #include<bits/stdc++.h> using namespace…
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ1202 BZOJ1051 BZOJ1001 BZOJ1588 BZOJ1208 BZOJ1491 BZOJ1084 BZOJ1295 BZOJ3109 BZOJ1085 BZOJ1041 BZOJ1087 BZOJ3038 BZOJ1821 BZOJ1076 BZOJ2321 BZOJ1934 BZOJ…
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道就行了. BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ1202 BZOJ1051 BZOJ1001 BZOJ1588 BZOJ1208 BZOJ1491 BZOJ1084 B…