首页 > 其他分享 >AGC034F 题解

AGC034F 题解

时间:2023-12-31 21:59:14浏览次数:26  
标签:++ 题解 sum int AGC034F FWT oplus mod

FWT 入门题,很适合我这样的蒟蒻。

首先我们可以轻松的根据转移条件写出来一个优美的函数 \(T(i)=1+\sum_{j\oplus k=i}a_kT(j)\),边界为 \(T(0)=0\)。

这个方程属于转移带环的 DP,处理方法一般是高斯消元,在这道题里会 T 飞。

但是我们又注意到后边是一个美丽的异或卷积,因此可以考虑用 FWT 优化转移。根据卷积我们推导 \(T=I+T\oplus A\),其中函数 \(A\) 代表题目所给的序列。但是这样显然右边多了一个 \(2^n\),所以 \(T+2^n=I+T\oplus A\),然后根据广义乘法的运算法则,我们认为 \(T=\frac{I-2^n}{1-A}\),因此可以直接上下分别 FWT 然后点值相除。

核心代码如下:

signed main()
{
    cin >> n;
    n = (1 << n);
    long long sum = 0;
    for (int i = 0; i < n; i++)
        cin >> a[i], sum += a[i];
    sum %= mod;
    sum = qpow(sum, mod - 2);
    for (int i = 0; i < n; i++)
        a[i] = 1ll * a[i] * sum % mod;
    a[0] = (a[0] - 1 + mod) % mod;
    b[0] = n - 1;
    for (int i = 1; i < n; i++)
        b[i] = mod - 1;
    fwt(a, 1), fwt(b, 1);
    for (int i = 0; i < n; i++)
        a[i] = 1ll * b[i] * qpow(a[i], mod - 2) % mod;
    fwt(a, -1);
    for (int i = 0; i < n; i++)
        printf("%d\n", (a[i] - a[0] + mod) % mod);
}

标签:++,题解,sum,int,AGC034F,FWT,oplus,mod
From: https://www.cnblogs.com/Piggy424008/p/17938060/solution-at-agc034-f

相关文章

  • P6256 题解
    我认为,这道题是我学OI历史以来做过的最难写,最难受,最变态,最不可做,最怀疑人生的题。然后还莫名其妙遇见了!给出一种时间复杂度略劣于ix35的做法。因为本人码力不是很好,因此认为这道题讲讲代码写法也很必要。题意就是给一些线段上戳洞,使得对于给定的一个区间\([l,r]\),从无穷远......
  • P9438 题解
    对于一次询问,相当于在考虑整数\(\frac{n}{x}\)变为\(1\)的方案数。进一步的,这相当于给定一个数列\(c_0\cdotsc_k\),每一次可以减小任意位的任意值,但不能空选,问方案数,这里“空选”指的是不选任何一个数。先考虑允许空选的时候应该怎么做,令\(f(x)\)代表正好走了\(x\)步变......
  • P4528 题解
    这篇题解并不做任何形式上的理论推导,而是在于引导像我一样的蒟蒻,如何在遇到这样的题时,不会陷入数据结构暴力分别求三种形态的深渊里无法自拔。看到这道题我们的第一想法应该是把三种形态的数量都求出来,如果可以的话,这题马上就秒掉了。那么我们尝试着去求——比较简单的可能是高......
  • 一些数 题解
    首先我们考察LIS长度为\(n-1\)的数列的性质。可以发现,这必定是\(1,2,3,\cdots,n\)中拎出一个不听话的元素甩到其他地方去,剩下的元素依次补齐所构成的。这意味着,最多只有一个元素满足\(a_i-i\ge2\),更具体的,不考虑只对邻项交换的排列(即形如\(1,2,3,\cdots,i,i-1,\cdots,n\)),......
  • 自出题题解
    U288469Piggy算路程显然是简单贪心。黄。U306825Piggy数编号先推式子。令\(L(n,k)\)为最长区块长度为\(k\)的方案数,则\(Ans=\sum_{i=0}^n\limits{L(n,i)}\timesk\)。下面转为求\(L(n,k)\)。我们考虑可能的区块长度分别为多少。那么就相当于我们要枚举所有的长度在......
  • CF1438F 题解
    如果能想到这道题用随机化,想来这道题的解法就显然了。但是为什么这道题一定要随机呢?我们考虑一棵完美二叉树,编号随机。这棵树的熵毛估估一下应该是\(O(\log^nn)\)的,但是一次询问的话,考虑每次只能得到三个点的偏序关系为某几种情况的一种,这个熵是很小的,只有\(O(\logn)\),对减......
  • P7400 题解
    P7400,一个有趣的博弈论。下面称Paula和Marin都执行一轮操作的“一整轮”为一个周期。Sub1:\(n\le100\)我们采用\(O(n^2\timesn)=O(n^3)\)的DP即可。这里略去具体实现。Sub2:边的颜色均为洋红这意味着两人都可以走过任意一条边。考虑两方如何对对方进行“围追堵截”......
  • P9309 题解
    此题问\(\operatorname{lcm}(a\simb)\)的后导\(0\)个数。考虑\(\operatorname{lcm}\)相当于对唯一分解中的素数的指数取\(\max\),此题等价于:定义\(\operatorname{g}(x,y,z)\)在\([a,b]\)的所有整数中,分解出\(z\)的最高次幂是多少,那么\(ans=\min(\operatorname{g}......
  • CF1827F 题解
    不妨先考虑一个弱化版的问题,这个问题和原来的问题仅有一个区别:\(k\)是给定整数。称最后\(n-k\)个数是“特殊的”。那么我们可以注意到,每个特殊的数字的极大段必然递增放置或者递减放置。例如我们有排列\([7,5,8,1,4,2,6,3]\)而且\(k=2\),那么极大段的下标应该是\([1,4],[6,......
  • P4875 题解
    显然这道题的解法与\(8\)强相关。从这一点下手,我们不难想到先对每一种奶牛做前缀和,这样我们可以做到\(O(8)\)查询每个区间是否可行,从而有了一个\(O(4n^2)\)的纯暴力做法。不知道多少pts,反正不是正解。下一步我们考虑优化。如果我们能快速地找到哪些区间是合法的,那么时间复......