HDU 4421 Bit Magic(奇葩式解法)
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=4421
题目大意:
给了你一段代码, 用一个数组的数 对其进行那段代码的处理,是可以得到一个矩阵
让你判断这个矩阵能否由一个数组转化而来。
思路: 既然每组数据可以得到,那么他肯定能消去。 我们用一个数组P[i][j] 保存 a[i]^a[j] 的值
a[i]^a[j] 我们可用 P[i][j] = P[i][j-1]^a[j-1]^a[j]
这样我们就可以找出所有 P[i][j] = a[i]^a[j] 的值
然后自己推出了个公式
(a^b)&(a&b) == 0
(a^b)&(~(a|b)) == 0
(a^b)^(a^b) == 0
然后 用所有找出来的值进行计算 当所有值 为 0 则 满足
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<queue>
#include<string.h>
#include<iostream>
#include<vector>
using namespace std;
#define maxn 560
__int64 map[maxn][maxn];
__int64 P[maxn][maxn], n;
bool Judge()
{
__int64 i, j, sum;
for(i = ; i<n; i++)
{
if(map[i][i])
return ;
for(j = ; j<i; j++)
{
sum = map[i][j] ^ map[j][i];
if(sum)
return ;
}
}
memset(P,,sizeof(P));
for(i = ; i < n; i++)
{
P[i][i] = ;
for(j=i+; j <= n; j++)
P[i][j] = P[i][j-]^map[j-][j];
} for(i = ; i<n; i++)
{
for(j = i+; j<n; j++)
{
if(i% == && j% == )//(a^b)&(a&b)
sum = P[i][j]&(map[i][j]); else if(i% == && j% == )//(a^b)&(~(a|b))
sum = P[i][j]&(~map[i][j]);
else//(a^b)^(a^b)
sum = P[i][j]^map[i][j]; if(sum)
return ;
}
}
return ;
}
int main()
{
int i, j;
while(scanf("%I64d",&n) != EOF)
{
for(i = ; i<n; i++)
{
for(j = ; j<n; j++)
scanf("%I64d",&map[i][j]);
} if(Judge())
printf("YES\n");
else
printf("NO\n");
}
return ;
}
HDU 4421 Bit Magic(奇葩式解法)的更多相关文章
- HDU 4421 Bit Magic(2-sat)
HDU 4421 Bit Magic pid=4421" target="_blank" style="">题目链接 题意:就依据题目,给定b数 ...
- HDU 4421 Bit Magic (图论-2SAT)
Bit Magic Problem Description Yesterday, my teacher taught me about bit operators: and (&), or ( ...
- hdu 4421 Bit Magic
[题意] 这个函数是给A求B的,现在给你B,问你是否能有A的解存在. [2-SAT解法] 对于每个A[i]的每一位运行2-sat算法,只要跑到强连通就可以结束,应为只要判断是否有解,后面拓扑求解就不需 ...
- 图论(2-sat):HDU 4421 Bit Magic
Bit Magic Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- ACM/ICPC 之 数据结构-线段树思想(POJ2182,含O(n^2)插入式解法)
这道题在一定程度上体现了线段树的一种用法,解决的问题是:对于总计n个元素的第i个元素,已知其在[1,i]上部分序列的排名,求第i个元素在所有n个元素中的排名. 当然这道题数据比较水,所以用O(n^2) ...
- hdu 3183 A Magic Lamp(RMQ)
题目链接:hdu 3183 A Magic Lamp 题目大意:给定一个字符串,然后最多删除K个.使得剩下的组成的数值最小. 解题思路:问题等价与取N-M个数.每次取的时候保证后面能取的个数足够,而且 ...
- hdu 3183 A Magic Lamp RMQ ST 坐标最小值
hdu 3183 A Magic Lamp RMQ ST 坐标最小值 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题目大意: 从给定的串中挑 ...
- HDU 3183.A Magic Lamp-区间找最小值-RMQ(ST)
A Magic Lamp Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- HDU 4421 ZOJ 3656 Bit Magic
2-SAT,不要所有位置全部建好边再判断,那样会MLE的. 正解是,每一位建好边,就进行一次2-SAT. #include<cstdio> #include<cstring> ...
随机推荐
- (五)带属性值的ng-app指令,实现自己定义模块的自己主动载入
如今我们看下怎样使用带属性值的ng-app命令,让ng-app自己主动载入我们自己定义的模块作为根模块. <!DOCTYPE html> <html> <head> ...
- linux下显卡信息的查看
lspci | grep -i vga 这样就可以显示机器上的显卡信息,比如 [root@localhost conf]# lspci | grep -i vga01:00.0 VGA compat ...
- 从零开始学习jQuery-------jQuery元素选择器(三)
下面我们来介绍一下jQuery元素选择器,在Web开发中我们最常用的操作是获取元素,然后对获取的元素进行一系列的操作,jQuery根据获取页面元素的不同,可以将jQuery选择器分为四大类:基本选择器 ...
- Java基础知识强化18:抽象类、接口的区别 和 选择性实现接口方法
1.抽象类和接口的区别 抽象类里面可以有非抽象的方法(可以没有抽象方法),接口里只能有抽象方法. 抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号. 抽象类(abstract c ...
- 使用mailto在网页中链接Email地址
<a>标签还有一个作用是可以链接Email地址,使用mailto能让访问者便捷向网站管理者发送电子邮件.我们还可以利用mailto做许多其它事情.下面一一进行讲解,请看详细图示: 注意:如 ...
- html5 的百度地图连接
在一些网站上,我们经常会看到一些地址会有一个图标的形式展现,当你点击的时候就会加载一个你点击区域的地图出来,很神奇的一个功能,在之前是没有这样功能的,都是直接写上地址,你要去的话自己找去吧,现在有了这 ...
- DontDestroyOnLoad
本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/Unity_DontDestroyOnLoad.html public stati ...
- 【COGS1384】鱼儿仪仗队
[题目描述] Jzyz的池塘里有很多条鱼,鱼儿们现在决定组成一个仪仗队.现在备选的N(1 <= N <= 100,000)条鱼排成了一条直线,并且按照亲近关系排的队伍,鱼儿的顺序不能改变, ...
- SecureCRT上使用公钥登陆Linux服务器
SecureCRT部分配置 1.首先生成公钥. 打开SecureCRT(我的版本为7.0,估计其他版本基本相同)程序,点击菜单栏的“工具”->“创建公钥”.按照步骤执行.其中一步比较重要就是选择 ...
- jqgrid设置单元格数据
$("#gridid").jqGrid('setCell',rowid,icol,data); rowid为行ID,jqgrid内置的那个,从1开始 icol为列索引,从0开始, ...