zoukankan      html  css  js  c++  java
  • Aiiage Camp Day3 G Gatehouse

    题意

      求↓

      

      op是异或。

      n=2^k, 1<=k<=17

    题解

      FWT裸题..甚至在题面告知了模板名..

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 void FWT(long long a[], int n)
     5 {
     6     for (int d = 1; d < n; d <<= 1)
     7         for (int m = d << 1, i = 0; i < n; i += m)
     8             for (int j = 0; j < d; ++j)
     9             {
    10                 long long x = a[i + j], y = a[i + j + d];
    11                 a[i + j] = x + y; 
    12             }
    13 }
    14 
    15 void UFWT(long long a[], int n)
    16 {
    17     for (int d = 1; d < n; d <<= 1)
    18         for (int m = d << 1, i = 0; i < n; i += m)
    19             for (int j = 0; j < d; ++j)
    20             {
    21                 long long x = a[i + j], y = a[i + j + d];
    22                 a[i + j] = x - y; 
    23             }
    24 }
    25 
    26 long long a[200000], b[200000];
    27 
    28 int main()
    29 {
    30     int k;
    31     scanf("%d", &k);
    32     int n = pow(2, k);
    33     for (int i = 0; i < n; ++i)
    34         scanf("%lld", a + i);
    35     for (int i = 0; i < n; ++i)
    36         scanf("%lld", b + i);
    37     FWT(a, n);
    38     FWT(b, n);
    39     for (int i = 0; i < n; ++i)
    40         a[i] = a[i] * b[i];
    41     UFWT(a, n);
    42     for (int i = 0; i < n; ++i)
    43         printf("%lld
    ", a[i]);
    44     
    45     return 0;
    46 }
  • 相关阅读:
    poj2502(最短路)
    poj1511(最小环和)
    uva11090(spfa判负环)
    hdu4370(spfa最短路最小环)
    uva10561(SG)
    uvalive5059(SG)
    uvaliva3905(扫描线)
    scu4445(模拟)
    uvalive3902(树上的最优化 贪心)
    scu4444(完全图最短路)
  • 原文地址:https://www.cnblogs.com/aseer/p/8442538.html
Copyright © 2011-2022 走看看