题目链接

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(奇葩式解法)的更多相关文章

  1. HDU 4421 Bit Magic(2-sat)

    HDU 4421 Bit Magic pid=4421" target="_blank" style="">题目链接 题意:就依据题目,给定b数 ...

  2. HDU 4421 Bit Magic (图论-2SAT)

    Bit Magic Problem Description Yesterday, my teacher taught me about bit operators: and (&), or ( ...

  3. hdu 4421 Bit Magic

    [题意] 这个函数是给A求B的,现在给你B,问你是否能有A的解存在. [2-SAT解法] 对于每个A[i]的每一位运行2-sat算法,只要跑到强连通就可以结束,应为只要判断是否有解,后面拓扑求解就不需 ...

  4. 图论(2-sat):HDU 4421 Bit Magic

    Bit Magic Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  5. ACM/ICPC 之 数据结构-线段树思想(POJ2182,含O(n^2)插入式解法)

    这道题在一定程度上体现了线段树的一种用法,解决的问题是:对于总计n个元素的第i个元素,已知其在[1,i]上部分序列的排名,求第i个元素在所有n个元素中的排名. 当然这道题数据比较水,所以用O(n^2) ...

  6. hdu 3183 A Magic Lamp(RMQ)

    题目链接:hdu 3183 A Magic Lamp 题目大意:给定一个字符串,然后最多删除K个.使得剩下的组成的数值最小. 解题思路:问题等价与取N-M个数.每次取的时候保证后面能取的个数足够,而且 ...

  7. hdu 3183 A Magic Lamp RMQ ST 坐标最小值

    hdu 3183 A Magic Lamp RMQ ST 坐标最小值 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题目大意: 从给定的串中挑 ...

  8. 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 ...

  9. HDU 4421 ZOJ 3656 Bit Magic

    2-SAT,不要所有位置全部建好边再判断,那样会MLE的. 正解是,每一位建好边,就进行一次2-SAT. #include<cstdio> #include<cstring> ...

随机推荐

  1. PHP 計算字符串長度函數

    PHP內置的字符串長度函數strlen無法正確處理中文字符串,它得到的只是字符串所占的字節數.對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是3倍的差 ...

  2. MVC模式实现登录以及增删改查之登录(一)

    我在这里用的不是maven项目,用的一般的web项目,所以需要用到的架包需要自己去下载添加,在项目中,一定注意环境的配置,我用的是jre1.7 1  新建项目 2  建立好MVC的管理包,导入对应的架 ...

  3. setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key delete.的问题

    今天弄ios的sqlite数据库,程序写完后编译发现一个奇怪的问题,错误信息也不提示行号,只有如下信息: 一遍遍的查找代码也没有发现啥问题,后来在storyboard中找到了该错误的原因 原来是一个按 ...

  4. SpringMVC11文件上传

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  5. Sublime Text插件之Emmet

    转载:http://www.w3cplus.com/tools/using-emmet-speed-front-end-web-development.html Emmet插件以前被称作为Zen Co ...

  6. asp.net Request.ServerVariables[] 读解

    获取客户端的IP地址,代码如下: /// <summary> /// 获取客户端IP地址 /// </summary> /// <returns></retu ...

  7. (转)PHP正则表达式的快速学习方法

    1.入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或 ...

  8. 从Select语句看Oracle查询原理(了解Oracle的查询机制)

    第一步:客户端把语句发给服务器端执行 当我们在客户端执行select语句时,客户端会把这条SQL语句发送给服务器端,让服务器端的进程来处理这语句.也就是说,Oracle客户端是不会做任何的操作,他的主 ...

  9. SQL SERVER 2012疑难问题解决方法

    问题一: 问题描述 SQL SERVER 2012 尝试读取或写入受保护的内存.这通常指示其他内存已损坏. (System.Data) 解决办法 管理员身份运行 cmd ->  输入 netsh ...

  10. PHP引用(&)详解

    PHP的引用(就是变量.函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 变量的引用 PHP 的引用允许你用两个变量来指向同一个内容 //打印数组 fun ...