位运算,枚举。

按按分开计算,枚举$?$是$0$还是$1$,分别计算出$sum$,然后就可以知道该位需要填$1$还是$0$了。

  1. #include<map>
  2. #include<set>
  3. #include<ctime>
  4. #include<cmath>
  5. #include<queue>
  6. #include<string>
  7. #include<vector>
  8. #include<cstdio>
  9. #include<cstring>
  10. #include<iostream>
  11. #include<algorithm>
  12. #include<functional>
  13. using namespace std;
  14.  
  15. int n,m;
  16. char s[][];
  17. map<string,int>z;
  18. char t[];
  19.  
  20. int ans1[],ans2[];
  21.  
  22. int q[];
  23.  
  24. struct X
  25. {
  26. int op;
  27. int x1,x2;
  28. }p[];
  29.  
  30. int main()
  31. {
  32. scanf("%d%d",&n,&m);
  33. for(int i=;i<=n;i++)
  34. {
  35. scanf("%s",t);
  36. z[t]=i;
  37. scanf("%s",t);
  38.  
  39. scanf("%s",t);
  40. if(t[]==''||t[]=='')
  41. {
  42. p[i].op=;
  43. strcpy(s[i],t);
  44. }
  45. else
  46. {
  47. if(t[]=='?') p[i].x1=-;
  48. else p[i].x1 = z[t];
  49.  
  50. scanf("%s",t);
  51. if(t[]=='O') p[i].op=;
  52. if(t[]=='X') p[i].op=;
  53. if(t[]=='A') p[i].op=;
  54.  
  55. scanf("%s",t);
  56. if(t[]=='?') p[i].x2=-;
  57. else p[i].x2 = z[t];
  58. }
  59. }
  60.  
  61. for(int j=;j<m;j++)
  62. {
  63. int sum[]; sum[]=sum[]=;
  64. for(int tx=;tx<=;tx++)
  65. {
  66. for(int i=;i<=n;i++)
  67. {
  68. if(p[i].op==) q[i] = s[i][j]-'';
  69. else
  70. {
  71. int x1 = p[i].x1, x2 = p[i].x2;
  72. if(x1==-) x1 = tx; else x1 = q[x1];
  73. if(x2==-) x2 = tx; else x2 = q[x2];
  74.  
  75. if(p[i].op==) q[i] = (x1|x2);
  76. else if(p[i].op==) q[i] = (x1^x2);
  77. else if(p[i].op==) q[i] = (x1&x2);
  78. }
  79. }
  80. for(int i=;i<=n;i++) sum[tx]+=q[i];
  81. }
  82.  
  83. if(sum[]==sum[]) ans1[j]=ans2[j]=;
  84. else if(sum[]<sum[]) ans1[j]=,ans2[j]=;
  85. else ans1[j]=,ans2[j]=;
  86. }
  87.  
  88. for(int i=;i<m;i++) printf("%d",ans1[i]); printf("\n");
  89. for(int i=;i<m;i++) printf("%d",ans2[i]); printf("\n");
  90.  
  91. return ;
  92. }

CodeForces 779E Bitwise Formula的更多相关文章

  1. CodeForces 778B - Bitwise Formula

    题意: 选择一个 m 位的二进制数字,总分为 n 个算式的答案之和.问得到最低分和最高分分别应该取哪个二进制数字 分析: 因为所有数字都是m位的,高位的权重大于低位 ,我们就从高到低考虑 ans 的每 ...

  2. 【codeforces 779E】Bitwise Formula

    [题目链接]:http://codeforces.com/contest/779/problem/E [题意] 给你n个长度为m的二进制数 (有一些是通过位运算操作两个数的形式给出); 然后有一个未知 ...

  3. Codeforces Problem 778B Bitwise Formula

    题目链接:http://codeforces.com/contest/779/problem/E 题意:有n个变量都可以用m位二进制数表示,这n个数的value将以两种格式中的一种给出 1.变量名, ...

  4. 【推导】【贪心】Codeforces Round #402 (Div. 2) E. Bitwise Formula

    按位考虑,每个变量最终的赋值要么是必为0,要么必为1,要么和所选定的数相同,记为2,要么和所选定的数相反,记为3,一共就这四种情况. 可以预处理出来一个真值表,然后从前往后推导出每个变量的赋值. 然后 ...

  5. CF778B(round 402 div.2 E) Bitwise Formula

    题意: Bob recently read about bitwise operations used in computers: AND, OR and XOR. He have studied t ...

  6. Codeforces 1408I - Bitwise Magic(找性质+集合幂级数)

    Codeforces 题面传送门 & 洛谷题面传送门 Yet another immortal D1+D2 I %%%%%% 首先直接统计肯定是非常不容易的,不过注意到这个 \(k\) 非常小 ...

  7. CodeForces 1408I Bitwise Magic

    题意 给定三个整数 \(n,k,c\) 和一个长度为 \(n\) 的序列 \(a\),保证 \(a_i\) 互不相同.可以操作 \(k\) 次,每次随机选择一个 \(a_i\) 变成 \(a_i-1\ ...

  8. Codeforces Round #402 (Div. 1)

    A题卡壳了,往离线倒着加那方面想了会儿,后来才发现方向错了,二十多分钟才过掉,过了B后做D,想法好像有点问题,最后只过两题,掉分了,差一点回紫. AC:AB Rank:173 Rating:2227- ...

  9. Codeforces Round#402(Div.1)掉分记+题解

    哎,今天第一次打div1 感觉头脑很不清醒... 看到第一题就蒙了,想了好久,怎么乱dp,倒过来插之类的...突然发现不就是一道sb二分吗.....sb二分看了二十分钟........ 然后第二题看了 ...

随机推荐

  1. Maven命令创建java项目

    ------------------------------java项目搭建--------------------------- 使用Maven构建一个简单的Java项目 1.进入命令行,执行下面的 ...

  2. nodejs与mongo

    1.连接URL (使用数据用户名与密码连接或不使用连接数据库) npm install mongodb --save var mon = require('mongodb').MongoClient; ...

  3. python 面试题(2)

    1.Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都 ...

  4. LightOJ 1023 Discovering Permutations 水题

    http://www.lightoj.com/volume_showproblem.php?problem=1023 题意:26字母全排列 思路:用next_permutation或者思维想一下都可以 ...

  5. netcore 使用log4net

    1.Install Install-Package log4net 2. conifg 創建文件:log4net.config <?xml version="1.0" enc ...

  6. java collection(一)

    1.Collection层次结构: 2.集合Conllection的基本概念: (1)集合的基本认识:如StringBuffer&StringBuilder是集合(存储的对象类型是String ...

  7. 消息队列之 ActiveMQ(山东数漫江湖)

    简介 ActiveMQ 特点 ActiveMQ 是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高效.可扩展.稳定.安全的企业级消息通信. 它的设计目标是提供标准的.面向消息的.多语言 ...

  8. Less & Sass

    CSS不是一种编程语言.它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,它没有变量,也没有条件语句,只是一行行单纯的描述.有人就开始为CSS加入编程元素,这被叫做"C ...

  9. F题 hdu 1431 素数回文

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 素数回文 Time Limit: 2000/1000 MS (Java/Others)    M ...

  10. B题 hdu 1407 测试你是否和LTC水平一样高

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1407 测试你是否和LTC水平一样高 Time Limit: 2000/1000 MS (Java/Ot ...