• CF1088D Ehab and another another xor problem


    思路:

    根据异或的性质一位一位来搞。参考了https://blog.lucien.ink/archives/362/

    实现:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 void out(char x, int a, int b)
     4 {
     5     cout << x << " " << a << " " << b << endl;
     6     fflush(stdout);
     7 }
     8 int main()
     9 {
    10     int a, b;
    11     char big = 'a';
    12     out('?', 0, 0);
    13     cin >> a;
    14     if (a == -1) big = 'b';
    15     int x = 0, y = 0;
    16     for (int i = 29; i >= 0; i--)
    17     {
    18         int t = 1 << i;
    19         x |= t; y &= ~t;
    20         out('?', x, y);
    21         cin >> a;
    22         x ^= t; y ^= t;
    23         out('?', x, y);
    24         cin >> b;
    25         if (a == -1 && b == 1)
    26         {
    27             x |= t; y |= t;
    28         }
    29         else if (a == 1 && b == -1)
    30         {
    31             x &= ~t; y &= ~t;
    32         }
    33         else if (a == b)
    34         {
    35             if (big == 'a')
    36             {
    37                 x |= t; y &= ~t;
    38                 if (a == -1) big = 'b'; 
    39             }
    40             else
    41             {
    42                 x &= ~t; y |= t;
    43                 if (a == 1) big = 'a';
    44             }
    45         }
    46     }
    47     out('!', x, y);
    48     return 0;
    49 }
  • 相关阅读:
    HDU 5444 Elven Postman 二叉排序树
    HDU 5438 Ponds dfs模拟
    Gym
    markdown test
    Gym
    集训回顾
    UVALive
    UVALive
    UVALive
    codeforcres 589 J
  • 原文地址:https://www.cnblogs.com/wangyiming/p/10963386.html
Copyright © 2020-2023  润新知