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> ...
随机推荐
- Android(java)学习笔记229:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)
1.接口 接口可以隐藏代码内部的细节,只暴露程序员想暴露的方法 2.利用上面的思想优化之前的案例:服务(service)之绑定服务调用服务里面的方法,如下: (1)这里MainActivity.jav ...
- Android中强大的Matrix操作
简介: Matrix翻译字面意思时矩阵,在Android的API中提供了两种Matrix,分别是android.graphics.Matrix 和 android.opengl.Matrix . 后者 ...
- python-Pickle序列化
[Python之旅]第三篇(二):Pickle序列化 python 序列化 pickle 摘要: 说明:关于Pickle的说明 作如下说明: 1 2 3 4 5 6 7 序列化的概念很简单 ...
- Poj 3368 Frequent values
/* 线段树区间合并 维护几个信息 到时候乱搞一下就好了 开始T了 有一种情况可以不用递归 直接算出来 */ #include<iostream> #include<cstdio&g ...
- Ajax 如何提交集合到mvc后台
1,前端请求如下 var apply = { CompanyName: $("[name='corpName']").val(), ContactUser: $("[na ...
- jquery/js当前URL对当前栏目高亮突出显示
html: 1 <div class="nav"> 2 <ul> 3 <li><a href="index.html" ...
- 网页调用外部APP
<activity android:name=".MainActivity" android:label="@string/app_name"> & ...
- Android permission访问权限大全
1.android.permission.WRITE_USER_DICTIONARY 允许应用程序向用户词典中写入新词 2.android.permission.WRITE_SYNC_SETTINGS ...
- [个人原创]关于java中对象排序的一些探讨(一)
有的时候我们需要将自己定义的对象,有序输出.因为一般我们程序的中间结果需要存储在容器里,那么怎样对容器中的对象按照一定次序输出就是程序员经常需要考虑的问题.本片文章探讨了怎样有序化输出容器中的对象的问 ...
- Notepad++中查找替换回车符
用Nodepad++打开文件 View->Show Symbol->Show End of Line "End of Line"行结束符,由"CR" ...