首页 > 其他分享 >【题解】CF472G Design Tutorial: Increase the Constraints

【题解】CF472G Design Tutorial: Increase the Constraints

时间:2023-04-07 21:45:28浏览次数:43  
标签:__ 分块 正解 题解 builtin Increase 卷积 popcount CF472G

《正解分块 + FFT 跑 1min,__builtin_popcount 暴力跑 10s》

《没人写正解,CF 也不卡》

思路

正解:分块 + FFT

乱搞:__builtin_popcount

首先我们知道哈明距离可以用一种 \(O(|字符集| |S|)\) 的算法求。

具体考虑枚举字符集中的每一个字符,将两个串中是该字符的位置看作 \(1\),不是该字符的位置看作 \(0\),然后数不同的位置就行。

基于这个思路,考虑把 \(0, 1\) 转成二进制直接异或再 __builtin_popcount 就可以得到一种暴力,卡一下常就过了。

但是我们需要一个看起来是正解,复杂度也是正解的做法,不然会遭天谴!

于是考虑到哈明距离的另一种求法:同样转化成 \(0, 1\),但是求出所有对应位置的乘积之和再容斥算哈明距离。

假设 \(p_2 - p_1 = k\) 位,不考虑 \(len\) 的情况下答案是 \(\sum\limits_{i = p1}^{n - k} A_i B_{i + k}\).

发现是一个差卷积的形式,无视剩下的限制就可以直接 NTT \(O(n \log n)\) 算。

剩下的限制不太好做,考虑到每次都算差卷积很浪费时间,想一想块块做法。

考虑把 \(B\) 分块,然后每一块都和 \(A\) 预处理差卷积。

然后散块暴力算哈明距离,整块直接调用就行。

复杂度大概要算一下最优块长,不然感觉过不了。

代码不是我自己写的就不放了。

标签:__,分块,正解,题解,builtin,Increase,卷积,popcount,CF472G
From: https://www.cnblogs.com/lingspace/p/cf472g.html

相关文章

  • 【题解】臭气弹
    用次数乘上\(P/Q\)来构建增广矩阵,进行高斯消元。在算出每个点被摧毁的概率与所有点的期望出现次数。由于每个点爆炸概率相同,所以每个点被摧毁的概率就是这个点的期望出现次数\(/\)所有点的期望出现次数。#include<bits/stdc++.h>usingnamespacestd;constintN=311;......
  • 荣耀magicbook安装Linux系统boot fail问题解决
    偶然网上冲浪,发现了Debian系的kalilinux有点意思,刚好手边有一台不怎么用的荣耀magicbook,于是准备装个双系统好不容易下完了kali的镜像,使rufus写入了U盘但是在安装过程中怎么安装都显示bootfail,切换了n个版本的Linux系统,发现还是这样,但是实测Debian11是可以进入引导项的最后所......
  • CF1810E 题解
    一、题目描述:给你一个n个点,m条边的无向图,点带权,起点可任意选择。每走过一个新的点,你的能力值会+1。一开始你的能力值为0。你只能经过点权小于等于你能力值的点。每条边,每个点都可以经过无限次,问能否走遍整个图。如果可以,输出"YES"。否则输出"NO"。......
  • 洛谷P1552 [APIO2012] 派遣 题解 左偏树
    题目链接:https://www.luogu.com.cn/problem/P1552题目大意:每次求子树中薪水和不超过\(M\)的最大节点数。解题思路:使用左偏树维护一个大根堆。首先定义一个Node的结构体:structNode{ints[2],c,sz,dis;longlongsum;Node(){};Node(int_c){s......
  • 关于Qt在线安装报错的一些问题解决办法
    事情的起因是,换了一台新电脑,准备安装Qt,突发现安装不了,报错,一共有几种:1.   2.第二种是不能到选择安装的界面   3.第三种是可以选择了,也可以下载安装了,但是卡在一个地方不动了以上3种个人猜测可能是某些网络原因,至于是什么网络原因,大家自行脑补。不多说废话,经过我......
  • 【容斥、状压dp】主旋律 题解
    【清华集训2014】主旋律题解神秘题。题目简述给你一个有向图\(G=(V,E)\)。求有多少\(E\)的子集\(E'\)使得新图\(G'=(V,E')\)是强连通图。强连通图的定义是任意两点\(u,v\)均存在\(u\tov,v\tou\)的路径。\(n\leq15,m\leqn\times(n-1)\)。解题思路......
  • GMOI R2 T2 猫耳小(加强版) 官方题解
    首先特判\(k=0\)的情况,此时的答案为非\(0\)数的个数,改法是将它们全改成\(0\)。再特判\(k\)较大的情况,此时的答案为\(0\)。否则,对于\(k\)大小适中的情况,我们从前往后遍历数组,同时维护当前区间的\(\operatorname{mex}\)值。根据\(\operatorname{mex}\)的定义,显然对......
  • [HAOI2007]理想的正方形【题解】
    题目描述有一个\(a\timesb\)的整数组成的矩阵,现请你从中找出一个\(n\timesn\)的正方形区域,使得该区域所有数中的最大值和最小值的差最小。输入格式第一行为\(3\)个整数,分别表示\(a,b,n\)的值。第二行至第\(a+1\)行每行为\(b\)个非负整数,表示矩阵中相应位置上......
  • 奶牛排队【题解】
    题目描述奶牛在熊大妈的带领下排成了一条直队。显然,不同的奶牛身高不一定相同……现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛\(A\)是最矮的,最右边的\(B\)是最高的,且\(B\)高于\(A\)奶牛。中间如果存在奶牛,则身高不能和\(A,B\)奶牛相同。问这样的奶牛最......
  • AT CODE FESTIVAL 2016 Final J 题解
    题目妙妙题!简要题意:给定一个\(n\),有一个\(n\timesn\)的网格图。有\(4n\)个方向\(U/D/L/R_{1,2,\dots,n}\),如下图:对于每个方向,有个限制:数\(x\)。你可以进行\(\lex\)次推棋子,把一个棋子放到当前方向指向的第一格,然后如果原来第一格有棋子,把它放到第二格,如果原来第二......