zoukankan      html  css  js  c++  java
  • CF1300C-Anu Has a Function 思维

    那个函数的功能f(x,y)就是把y有1的位置,对应的x位置也都变成0。所以我们发现只有第一个数不同会带来结果变化,后面怎么排序没关系。

    我们考虑那个数当第一个数最后结果最大。我们记录下二进制下每一位,出现过多少个1。然后依次枚举每个数当第一个数,然后把这个数1的位置对应出现1次数减去1,如果变0了,就证明这个数放在开头,答案二进制这一位是1,然后取最大就好了。

     1 #include <cstdio>
     2 #include <algorithm>
     3 using namespace std;
     4 int a[210000],uni[30],cnt[30],n,maxn;
     5 int main()
     6 {
     7     uni[0] = 1;
     8     for (int i = 1;i <= 30;i++)
     9         uni[i] = uni[i - 1] << 1;
    10     scanf("%d",&n);
    11     for (int i = 1;i <= n;i++)
    12     {
    13         scanf("%d",&a[i]);
    14         for (int o = 0;o <= 30;o++)
    15             if (a[i] & uni[o])
    16                 cnt[o]++;
    17     }
    18     maxn = 0;
    19     for (int i = 1;i <= n;i++)
    20     {
    21         int tmp = 0;
    22         for (int o = 0;o <= 30;o++)
    23             if ((a[i] & uni[o]) && cnt[o] == 1)
    24                 tmp += uni[o];
    25         if (tmp >= maxn)
    26         {
    27             maxn = tmp;
    28             swap(a[1],a[i]);
    29         }
    30     }
    31     printf("%d",a[1]);
    32     for (int i = 2;i <= n;i++)
    33         printf(" %d",a[i]);
    34     printf("
    ");
    35     return 0;
    36 }
  • 相关阅读:
    matlab画图-在同一图像中显示多个函数
    matlab简单作图2
    matlab简单作图
    c++ this指针概念
    c++ 静态成员
    C++ 类对象作为类成员
    (C++核心编程 )初始化列表
    (C++核心编程 )点和圆的关系
    (C++核心编程)设计立方体类
    (python基础 函数)
  • 原文地址:https://www.cnblogs.com/iat14/p/12289974.html
Copyright © 2011-2022 走看看