首页 > 其他分享 >SError_ 是我蝶 2.0

SError_ 是我蝶 2.0

时间:2024-06-05 21:55:17浏览次数:12  
标签:le 我蝶 sum ij SError 2.0 移位 式子

SError_ Orz

[ABC291G] OR Sum

给定两个长为 \(n\) 的序列 \(A_i\)、\(B_i\),循环移位 \(A_i\) 使得 $ \displaystyle\sum_{i=0}^{N-1}\ (A_i|B_i) $ 最大。
\(2 \le n \le 5\times10^5\)
\(0 \le A_i,B_i \le 31\)

拆位

\(31 = (11111)_2\)

怎么表述出原题的这个东西呢

暴力推下式子试试?

\[\begin {aligned} \sum _{i = 0} ^ {N - 1} (A_i | B_i) &= \sum _{i = 0} ^{N - 1} \sum _{j = 0} ^5 ([a_{ij} = 1] \or [b_{ij} = 1]) \times 2^j \\ &= \sum _{i = 0} ^{N - 1} \sum _{j = 0} ^5 (([a_{ij} = 1] + [b_{ij} = 1]) - [a_{ij} = 1][b_{ij} = 1]) \times 2^j \\ &= \sum _{i = 0} ^{N - 1} \sum _{j = 0} ^5 ((a_{ij} + b_{ij}) - a_{ij}b_{ij}) \times 2^j \\ &= \sum _{j = 0} ^5 2 ^ j \sum _{i = 0} ^ {N - 1}(a_{ij} + b_{ij} - a_{ij}b_{ij}) \\ &= \sum _{j = 0} ^5 2 ^ j \left( \sum_{i = 0} ^ {N - 1} a_{ij} + \sum _{i = 0} ^{N - 1} b_{ij} - \sum _{i = 0} ^ {N - 1} a_{ij}b_{ij} \right) \\ &= \sum _{j = 0} ^5 2 ^ j \left( \sum_{i = 0} ^ {N - 1} a_{ij} + \sum _{i = 0} ^{N - 1} b_{ij} \right) - \sum _{j = 0} ^5 2 ^ j\sum _{i = 0} ^ {N - 1} a_{ij}b_{ij} \end {aligned} \]

无论怎么循环移位,前面的东西是不会变的,设前面为 \(res_1\),那么现在目标就是最小化循环移位后后面的式子。考虑算出循环移位后的值。设循环移位 \(k\) 位的值是 \(c_k\)。

\[c_k = \sum _{j = 0} ^5 2 ^ j\sum _{i = 0} ^ {N - 1} a_{ij}b_{((i + k) \bmod n) j} \]

后面的式子还是比较典的(指在 SError_ 指导前完全不会(Sto SError_ Orz

具体地:首先后面的式子与 \(j\) 无关,把 \(j\) 无视。把循环移位的式子拍上去:

\[\sum _{i = 0} ^{N - 1} a_ib_{(i + k) \bmod n} \]

把 \(b\) 复制一遍把 \(\bmod\) 去掉。

\[\sum _{i = 0} ^{N - 1} a_ib_{i + k} \]

把 \(a\) 序列翻转成 \(a'\),用 \(a'_{N - i}\) 代替 \(a_i\)

\[\sum _{i = 0} ^{N - 1} a'_{N - i}b_{i + k} \]

这玩意是个卷积,取 \(a'\) 数组和 \(b\) 数组卷积的 \(N + k\) 项系数就得到了这个式子的值。

套回去原式

\[c_k = \sum _{j = 0} ^5 2 ^ j \times [N + k] (a_j * b_j) \]

最后对 \(c\) 数组求个 \(\max\) 就行了。

标签:le,我蝶,sum,ij,SError,2.0,移位,式子
From: https://www.cnblogs.com/AzusidNya/p/18233972

相关文章

  • iLogtail 2.0 重大升级,端上支持 SPL
    作者:太业流式处理语言发展早期流式处理概念:20世纪70年代,编程语言如APL提供了对数组的流式操作,这可以看作是流式处理语法的早期形式。管道(Pipes)概念在UNIX系统中的引进使得可以通过命令行将一个命令的输出串联到另一个命令的输入。Java的流(Stream)API:Java8在......
  • uniapp 2.0可视化开发工具:引领前端开发新潮流
    引言在移动互联网时代,跨平台应用开发成为前端开发者面临的重要挑战。uniapp作为一款优秀的跨平台应用框架,以其强大的功能和易用性赢得了广大开发者的青睐。特别是uniapp2.0版本的发布,伴随着可视化开发工具的出现,更是为前端开发带来了革命性的变革。本文将深入探讨uniapp2.0......
  • SError_ 是我蝶
    做多项式把自己做成若只了。[ABC303Ex]ConstrainedTreeDegree给定一个长度为\(K\)的正整数序列\(S\),求有多少个不同的树\(T\)使得:\(T\)中有\(N\)个节点。对于\(T\)中的任意一个节点\(i\)的度数\(d_i\),有\(d_i\inS\)。无根树计数,考虑Prufer序列。问题......
  • 文心一言、通义千问、智谱清言、kimi,AI批量生成文章保存word软件2.0版说明
    AI批量生成文章2.0版已经打包上传,文末自行下载。AI批量软件工具集成了文心一言、通义千问、智谱清言、kimi一共18个接口。可同时选择5个不同接口,读取excel第2列多个内容生成文章,并保存word软件。每次最多5个不同接口多线程同时处理3行excel,直到excel所有行列内容处理完毕。同......
  • vue2.0和vue3.0同时使用
    背景:原先电脑上安装了vue2.0和node14.17.6版本,后面新项目使用的是vue3.0和node 16.6.1。通过nvm安装node 16.6.1的时候,不小心把原来的2.0环境给搞坏了。目的:本文将通过文字描述(都是cmd命令,截图感觉没啥意义)的方式,讲述卸载和安装多版本node的vue环境前言:步骤中所有的命令都......
  • MVC2.0项目部署在IIS Winserver2012
    1、MVC1.0升级2.0初始项目为MVC1.0,用VS2010开发环境直接将项目升级为2.0参考地址:https://www.cnblogs.com/myshell/archive/2010/05/08/1730348.html用的第三种方式进行项目升级2、项目发布,直接重新生成项目,Bin文件夹下需要复制system.web.dllbin文件下不要复制系统文件,否则......
  • BK7258--wifi音视频soc芯片,1080P H264 wifi低功耗保活,内置BLE,音频code,psram,flash,USB2.
    BK7258是上海博通推出的高度集成的Wi-Fi+BLE combo音视频芯片,支持UVC和DVP摄像头,该芯片集成音视频外设及接口,1080P,H.264,低功耗,内置flash,dsp,psram,驱屏,回声消除及降噪等,广泛适用于可视猫眼,门锁,门铃,ipc,内窥,儿童相机等应用市场。可视门铃应用:DVP接口支持720p25fps图像采集;MJPE......
  • [工具] png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0
    png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0此软件是在pngpacker_V1.1软件基础之后,开发的界面化操作软件,方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件,得到如下目录,双击打开pngPackerGUI.exe 2.打开pngPackerGUI之后,默认的界面如下: 3.选择目录:选......
  • uMod 2.0
    uMod2.0是Unity游戏引擎的完整模组解决方案,使游戏模组支持变得快速而轻松。模组制作者能够通过在Unity编辑器中创建包含资源、脚本甚至整个场景的模组来扩展和修改游戏玩法。特征-开箱即用的基本模块支持-支持Unity可以处理的所有资源,是的!甚至可以包含场景和脚本-从本地......
  • 基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法
    基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法本文介绍了基于docker的oracle12.2.0.1部署,包含了oracle基本配置、监听器和实例启动方法、PDB和CDB操作方法、表空间建立和用户数据库建立、常见启动问题解决等,并介绍了镜像制作、镜像打包、镜像迁移......