zoukankan      html  css  js  c++  java
  • ARC100E. Or Plus Max

    题目

    好题。没想出解法。
    官方题解:

    这个解法和 Small Multiple 那道题的解法有异曲同工之妙。

    扩展

    若把 $mathsf{or}$ 改成 $mathsf{and}$ 或者 $mathsf{xor}$ 怎么解?

    代码

    int main() {
      int n;
      scan(n);
      vi a(1 << n);
      scan(a);
      vpii b(1 << n);
      rng (i, 0, 1 << n) {
        b[i] = {i, -1};
      }
     
      auto cmp = [&](int x, int y) {
        if (x == y) return false;
        if (x == -1) return false;
        if (y == -1) return true;
        return a[x] > a[y];
      };
     
      auto update = [&](pii &a, pii b) {
        vi x{a.first, a.second, b.first, b.second};
        sort(all(x), cmp);
        UNIQ(x);
        a = {x[0], x[1]};
      };
     
      rng (i, 0, 1 << n) {
        rng (j, 0, n) {
          if (!get_bit(i, j)) {
            update(b[i | 1 << j], b[i]);
          }
        }
      }
     
      int ans = 0;
      rng (i, 1, 1 << n) {
        chkmax(ans, a[b[i].first] + a[b[i].second]);
        println(ans);
      }
     
      return 0;
    }
    

    Exec Time: 206 ms.

    但是改成

    int main() {
      int n;
      scan(n);
      vi a(1 << n);
      scan(a);
      vv<int> b(1 << n);
      rng (i, 0, 1 << n) {
        b[i] = {i};
      }
     
      auto cmp = [&](int x, int y) {
        return a[x] > a[y];
      };
     
      auto update = [&](vi &a, vi &b) {
        vi tmp = a;
        tmp.insert(tmp.end(), all(b));
        sort(all(tmp), cmp);
        UNIQ(tmp);
        a = {tmp[0], tmp[1]};
      };
     
      rng (i, 0, 1 << n) {
        rng (j, 0, n) {
          if (!get_bit(i, j)) {
            update(b[i | 1 << j], b[i]);
          }
        }
      }
      
      int ans = 0;
      rng (i, 1, 1 << n) {
        chkmax(ans, a[b[i][0]] + a[b[i][1]]);
        println(ans);
      }
    
      return 0;
    }
    

    Exec Time 416 ms.

    仅仅是把pair<int,int>改为vector<int>,为何二者运行时间悬殊?

  • 相关阅读:
    VS批处理命令使用
    python实现域账号登陆
    Sql Server 优化技巧
    Windows 2012 R2 安装net4.6.1
    Resharper报“Possible multiple enumeration of IEnumerable”
    京东模拟点击
    使用常规方法爬取猫眼电影
    关于断点调试
    看网络开发实战书笔记
    scrapy的request的meta参数是什么意思?
  • 原文地址:https://www.cnblogs.com/Patt/p/11904401.html
Copyright © 2011-2022 走看看