题目链接

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 则 满足

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. #include<queue>
  5. #include<string.h>
  6. #include<iostream>
  7. #include<vector>
  8. using namespace std;
  9. #define maxn 560
  10. __int64 map[maxn][maxn];
  11. __int64 P[maxn][maxn], n;
  12. bool Judge()
  13. {
  14. __int64 i, j, sum;
  15. for(i = ; i<n; i++)
  16. {
  17. if(map[i][i])
  18. return ;
  19. for(j = ; j<i; j++)
  20. {
  21. sum = map[i][j] ^ map[j][i];
  22. if(sum)
  23. return ;
  24. }
  25. }
  26. memset(P,,sizeof(P));
  27. for(i = ; i < n; i++)
  28. {
  29. P[i][i] = ;
  30. for(j=i+; j <= n; j++)
  31. P[i][j] = P[i][j-]^map[j-][j];
  32. }
  33.  
  34. for(i = ; i<n; i++)
  35. {
  36. for(j = i+; j<n; j++)
  37. {
  38. if(i% == && j% == )//(a^b)&(a&b)
  39. sum = P[i][j]&(map[i][j]);
  40.  
  41. else if(i% == && j% == )//(a^b)&(~(a|b))
  42. sum = P[i][j]&(~map[i][j]);
  43. else//(a^b)^(a^b)
  44. sum = P[i][j]^map[i][j];
  45.  
  46. if(sum)
  47. return ;
  48. }
  49. }
  50. return ;
  51. }
  52. int main()
  53. {
  54. int i, j;
  55. while(scanf("%I64d",&n) != EOF)
  56. {
  57. for(i = ; i<n; i++)
  58. {
  59. for(j = ; j<n; j++)
  60. scanf("%I64d",&map[i][j]);
  61. }
  62.  
  63. if(Judge())
  64. printf("YES\n");
  65. else
  66. printf("NO\n");
  67. }
  68. return ;
  69. }

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. [PWA] 17. Cache the photo

    To cache photo, You need to spreate cache db to save the photo. So in wittr example, we cache the te ...

  2. 案例:java中的基本排序

    //冒泡排序 import java.util.Arrays; public class ForTest{ public static void main(String args[]){ int[] ...

  3. HDU 4462(暴力枚举)

    因为题目当中的k比较小k <= 10,所以可以直接枚举,题目里面由两个trick, 一个是如果每个点都可以放稻草人的话,那么答案是0, 另外一个就是如果可以放稻草人的点不用被照到.知道了这两个基 ...

  4. The requested URL ***** was not found on this serve

    Wamp的Alias具体是干什么用的,后面要研究一下!!!! 我是之前创建了一个站点用Alias,后来把站点文件移到了www下后,除了首页都访问不了了.显示“The requested URL *** ...

  5. 该项目中不存在目标 precomputecompiletypescript The target "PreComputeCompileTypeScript" does not exist in the project

    Open Microsoft.TypeScript.targets file located under C:\Program Files (x86)\MSBuild\Microsoft\Visual ...

  6. table标签,认识网页上的表格

    有时候我们需要在网页上展示一些数据,如某公司想在网页上展示公司的库存清单.如下表: 想在网页上展示上述表格效果可以使用以下代码: 创建表格的四个元素: table.tbody.tr.th.td 1.& ...

  7. ASP.NET菜鸟之路之Request小例子

    背景 我是一个ASP.NET菜鸟,暂时开始学习ASP.NET,在此记录下我个人敲的代码,没有多少参考价值,请看到的盆友们为我点个赞支持我一下,多谢了. Request获取值 Request获取值有两种 ...

  8. javaScript 手写图片轮播

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 比较两个字符,相等输出yes,不相等输出no

    DATA SEGMENTSHOW1 DB 'YES$'SHOW2 DB 'NO$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOV AX,DA ...

  10. OOCSS学习(二)

    OOCSS —— 面向对象CSS 5.CSS团队精神:CSS最佳团队开发 在本文中,你将学习书写CSS的最佳实践来帮助你避免不一致和冗余;实际上,这样制定标准,简化了团队开发的工作. 1)结构化 (根 ...