当前位置: 首页 > news >正文

CF2131F 解题报告

分析

参考了官方题解。

首先你会发现:如果我们此时在 \((i,j)\),则有 \(a_i \otimes b_i=0\),如果我们想移动到 \((i+1,j)\),那么有:

\[\begin{aligned} a_{i+1} \otimes b_i &=0\\ (a_i \otimes b_i) \otimes (a_{i+1} \otimes b_i) &=0\\ a_i \otimes a_{i+1}&=0\\ a_i &=a_{i+1} \end{aligned} \]

嗯,很(不)显然。

同理有从 \((i,j)\) 移动到 \((i,j+1)\) 时有 \(b_j=b_{j+1}\)

总结一下就是:从 \((1,1)\) 移动到 \((x,y)\) 时有 \(a_1=a_2=a_3=\cdots=a_x=b_1=b_2=\cdots=b_y\)

那么有 \(f(x,y)=\min(cnt_0(x,y),cnt_1(x,y))\)

接下来是一步神奇的转化:

\[\begin{aligned} f(x,y)&=\min(cnt_0(x,y),cnt_1(x,y))\\ &=\frac{cnt_0(x,y)+cnt_1(x,y)}{2}-\frac{|cnt_0(x,y)-cnt_1(x,y)|}{2}\\ &=\frac{x+y}{2}-\frac{|cnt_0(x,y)-cnt_1(x,y)|}{2} \end{aligned} \]

然后因为 \(\large \sum \limits_{x,y\in[1,n]} \frac{x+y}{2}=\frac{n^2\times(n+1)}{2}\),所以我们只需要统计 \(\large \frac{|cnt_0(x,y)-cnt_1(x,y)|}{2}\) 就好了。

维护绝对值时,我们只关心两个数的大小关系。在对面的数组中,每有一个比自己小的值就加一次自己的值,每有一个比自己大的值就减一次自己的值;另一个数组也可以同样处理。至于相等的情况,在一个数组中改为小于等于,在另一个数组中改为大于等于即可。这可以通过排序后双指针处理。

http://www.zskr.cn/news/800.html

相关文章:

  • CF 1031 Div.2 解题报告
  • 粘连字符验证码的分割与识别思路
  • Symfony学习笔记 - Symfony Documentation - The Basics(3)
  • HAMi vGPU 原理分析 Part4:SpreadBinpack 高级调度策略实现
  • Brute Ratel C4红队框架 远控工具BRC4 2.1.2 版本分享
  • Navicat连接配置信息还原并导出文件
  • NOIP 集训日记(学术)
  • 一个Python并发编程技巧:future当作字典的key当作中间值构建最终结果
  • 国产DevOps平台Wiki模块能力全景解析:从知识协同到合规部署的关键抉择
  • Gitee Wiki如何重塑软件工厂时代的知识管理体系?
  • 第1章 计算机系统概述
  • 2025年,CRM厂家权威榜单【 TOP 5】
  • Why框架元推理,对本吉奥警告的解析与安全证明
  • Yii-1-1-应用开发即时启动指南-全-
  • 中电金信:AI重构测试体系智能化时代的软件工程新范式
  • DOS系统与Windows系统的区别
  • Android Studio 2025.1.1 安装与配置全流程教学
  • Postgres常用语句
  • 如何在Windows系统上安装Final Cut Pro
  • 【案例+1】HarmonyOS官方模板优秀案例 第7期:金融理财 记账应用
  • BurpSuite 代理原理 和 证书钉扎检测技术
  • java、Kotlin经验
  • 强大的OSINT情报工具:Blackbird用户名与邮箱搜索分析平台
  • MySQL索引
  • 从模糊到超清!Aiarty Image Enhancer 安装与使用教程
  • Google Play更改支付地址
  • 对话式 AI Workshop|零帧起手捏个「 Her」——搭建拥有个人记忆的语音助手
  • Codeforces Round 1048 (Div. 1) A Cake Assignment 题解
  • Linux中的字符设备和块设备详解和应用区别
  • Gitee DevOps:本土化研发效能引擎的崛起与突破