码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 778B - Bitwise Formula

时间:2017-03-05 16:34:21      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:main   names   选择   数字   log   oid   its   权重   span   

题意:

  选择一个 m 位的二进制数字,总分为 n 个算式的答案之和。问得到最低分和最高分分别应该取哪个二进制数字

分析:

  因为所有数字都是m位的,因为高位的权重大于地位 ,我们就从高到低考虑 ans 的每一位是取 0 还是取 1,统计该位的权重(即n个式子该位结果之和)即可。

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int n, m;
 4 map<string, int> mp;
 5 struct query{
 6     string f;
 7     int num;
 8     int a, op, b;
 9 }q[5005];
10 void init()
11 {
12     cin >> n >> m;
13     string s;
14     mp["?"] = 0;
15     for (int i = 1;  i <= n; i++)
16     {
17         cin >> s;
18         mp[s] = i;
19         cin >> s; 
20         cin >> s;
21         if (s[0] >= 0 && s[0] <= 9)
22         {
23              q[i].op = 0;
24              q[i].f = s;
25         } 
26         else
27         {
28             q[i].a = mp[s];
29             cin >> s;
30             if (s[0] == A) q[i].op = 1;
31             if (s[0] == O) q[i].op = 2;
32             if (s[0] == X) q[i].op = 3;
33             cin >> s;
34             q[i].b = mp[s];
35         }
36     }
37 }
38 int find(int x, int p)
39 {
40     int ret = 0;
41     q[0].num = p;
42     for (int i = 1; i <= n; i++)
43     {
44         if (q[i].op == 0) q[i].num = q[i].f[x]-0;
45         else
46         {
47             int a = q[q[i].a].num;
48             int b = q[q[i].b].num;
49             if (q[i].op == 1) q[i].num = a&b;
50             if (q[i].op == 2) q[i].num = a|b;
51             if (q[i].op == 3) q[i].num = a^b;
52         }
53         ret += q[i].num;
54     }
55     return ret;
56 }
57 void solve()
58 {
59     string ans1, ans2;
60     for (int i = 0; i < m; i++)
61     {
62         int x0 = find(i, 0);
63         int x1 = find(i, 1);
64         x0 <= x1 ? ans1 += 0 : ans1 += 1;
65         x0 >= x1 ? ans2 += 0 : ans2 += 1;
66     }
67     cout << ans1 << endl << ans2 << endl;
68 }
69 int main()
70 {
71     init();
72     solve();
73 }

 

CodeForces 778B - Bitwise Formula

标签:main   names   选择   数字   log   oid   its   权重   span   

原文地址:http://www.cnblogs.com/nicetomeetu/p/6505531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!