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

Kevin的矩阵【牛客tracker 每日一题】

Kevin的矩阵

时间限制:3秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

氧气少年现在有一个长度为n nn的序列a aa和一个空的矩阵,矩阵的行数不限,但列数为m mm

每次操作他可以从下面的操作中任选其一:

操作完成后,氧气少年将序列中的每个元素依次按照从上到下、从左到右的顺序填到矩阵中。(即:先填第1 11行第1 11列,再填第1 11行第2 22列,…… 填第1 11行第m mm列,填第2 22行第1 11列,填第2 22行第2 22列,…… 填第2 22行第m mm列,以此类推。)

氧气少年想要让矩阵至少一列的所有数字均为目标数字k kk,请求出他需要做的最少的操作次数。

例如,当a = [ 1 , 2 , 3 , 4 , 5 , 1 , 6 , 7 , 8 , 9 , 1 , 2 , 3 , 4 , 5 , 8 , 9 ] , m = 4 , k = 1 a=[1,2,3,4,5,1,6,7,8,9,1,2,3,4,5,8,9],m=4,k=1a=[1,2,3,4,5,1,6,7,8,9,1,2,3,4,5,8,9],m=4,k=1时,如果不执行任何操作,填数后的矩阵如下图所示:

如果在填数之前,先将a 16 a_{16}a16改为1 11,再将矩阵的列数增加为5 55,那么填数后的矩阵如下图所示:

注意到此时第一列的所有数字均为目标数字1 11,符合要求,并且没有比这耗费次数更少的操作方案。因此答案为2 22

例如,当a = [ 1 , 2 , 3 , 4 , 5 ] , m = 3 , k = 3 a=[1,2,3,4,5],m=3,k=3a=[1,2,3,4,5],m=3,k=3时,如果不执行任何操作,填数后的矩阵如下图所示:

注意到此时第三列的所有数字均为目标数字3 33,符合要求。因此答案为0 00

输入描述:

第一行包含一个整数T ( 1 ≤ T ≤ 10 5 ) T(1≤T≤10^5)T(1T105),表示测试用例的组数。

对于每组测试用例:

第一行包含三个整数n ( 1 ≤ n ≤ 2 ⋅ 10 5 ) , m ( 1 ≤ m ≤ 10 9 ) , k ( 0 ≤ k ≤ 10 9 ) n(1≤n≤2⋅10^5),m(1≤m≤10^9),k(0≤k≤10^9)n(1n2105),m(1m109),k(0k109),分别表示序列的长度,初始矩阵的列数和目标数字。

第二行包含n nn个整数a 1 … a n ( 0 ≤ a i ≤ 10 9 ) a_1…a_n(0≤a_i≤10^9)a1an(0ai109),表示该序列。

保证对于所有的测试用例,n nn的总和不超过2 ⋅ 10 5 2⋅10^52105

输出描述:

对于每组测试用例:

仅输出一行,包含一个整数,表示答案。

示例1

输入:

2 17 4 1 1 2 3 4 5 1 6 7 8 9 1 2 3 4 5 8 9 5 3 3 1 2 3 4 5

输出:

2 0

说明:

样例解释见题目描述。

解题思路

本题核心是枚举新列数+统计列修改代价求解最小操作次数:要让矩阵某一列全为目标数k,总操作次数 = 该列非k元素的修改次数 + 调整矩阵列数的代价(|新列数j - 原列数m|)。由于j超过n时每列仅1 11个元素,无优化空间,因此仅枚举j ≤ min(n, 2000)即可覆盖最优解。对每个枚举的j,遍历所有列c,统计序列中c、c+j、c+2j...位置的非k元素数量(修改代价),计算总代价并维护最小值。该方法通过范围剪枝大幅降低计算量,时间复杂度适配n总和≤ 2 e 5 ≤2e52e5T≤1e5的规模,精准找到最小操作次数。

总结

  1. 核心逻辑:总操作次数由数字修改次数列数调整代价组成,遍历所有合法列数j,计算每列的总代价取最小值。
  2. 关键优化:仅枚举j≤2000,跳过无优化意义的大列数,避免超时。
  3. 效率保障:剪枝后枚举量极小,线性统计修改次数,完美适配题目大数据量的输入要求。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vt;typedefpair<ll,ll>pll;constll N=2e5+10;constll mod=1e9+7;constll INF=1e18;ll pre[N];intmain(){ll T;cin>>T;while(T--){ll n,m,k;cin>>n>>m>>k;vector<ll>a(n+1);pre[0]=0;for(ll i=1;i<=n;i++){cin>>a[i];pre[i]=pre[i-1]+(a[i]!=k);}ll ans=1e18;ll mx=min(n,2000ll);for(ll j=1;j<=mx;j++){for(ll c=1;c<=min(j,n);c++){ll cnt=0;for(ll i=c;i<=n;i+=j)cnt+=(a[i]!=k);ans=min(ans,cnt+abs((ll)j-m));}}cout<<ans<<endl;}return0;}
http://www.jsqmd.com/news/537281/

相关文章:

  • OpenClaw异常处理:Qwen3-32B-Chat任务中断恢复机制
  • nomic-embed-text-v2-moe从零开始:开源权重+训练数据+完整推理链路说明
  • CogVideoX-2b显存优化实测:12GB显存流畅运行,性价比之选
  • LangGraph Platform本地部署实战:用Docker和CLI快速搭建你的第一个AI Agent微服务
  • 2026最新 Springboot+vue在线考试系统设计与实现
  • 2026泸州艺考生文化课冲刺可靠机构推荐指南:华升教育学校、华升教育学校、泸州华升教育培训机构合规吗、泸州华升教育培训机构合规吗选择指南 - 优质品牌商家
  • ALC5651 Codec实战:如何消除Android音频播放中的POP声(附完整寄存器配置)
  • 用Wireshark抓包分析CAN错误帧:手把手教你定位CRC/波特率/采样点问题
  • MindSpore Ops 模块核心概览学习
  • 2026年比较好的钛极岩铸不粘锅/物理不粘锅人气公司推荐 - 品牌宣传支持者
  • 如何在普通PC上低成本部署Qwen3?VLLM轻量化配置指南
  • 2026最新 Springboot+Vue在线学习系统设计与实现
  • Qwen3-ForcedAligner-0.6B开发者案例:基于Streamlit的双模型协同架构解析
  • 2026年靠谱的气力输送设备/气力输送系统/颗粒气力输送/粉体气力输送源头厂家推荐 - 品牌宣传支持者
  • SDMatte在跨境电商中的提效实践:多语言商品图批量生成透明底素材
  • 参数优化技巧:如何调整提示词,让生成的真人皮肤更自然、细节更丰富?
  • Z-Image-GGUF效果展示:抽象艺术、人物写真、风景摄影三类高质量作品集
  • RWKV7-1.5B-g1a轻量生成能力:120字内产品文案生成效果惊艳展示
  • 2026宜宾靠谱中高端家装公司推荐榜:附近装饰公司推荐、靠谱的装修公司有哪些、宜宾中高端装饰公司、宜宾别墅装饰公司选择指南 - 优质品牌商家
  • 别再只盯着W25Q128了!手把手教你搞定STM32驱动W25Q256(含4字节地址模式切换)
  • 雪女-斗罗大陆-造相Z-Turbo镜像部署全攻略:开箱即用的文生图工具
  • SDMatte镜像轻量化:去除冗余依赖、多阶段构建、镜像体积压缩至3.2GB
  • 计算机毕业设计springboot基于的养老平台的设计与实现 SpringBoot架构下智慧养老综合服务系统的设计与实现 基于Java的社区养老数字化管理平台开发
  • 美胸-年美-造相Z-Turbo模型架构解析:深入理解生成原理
  • 《欢乐数学》作者本·奥林盛赞:这是一本能帮助人们提升数学能力的罕见好书!
  • nli-distilroberta-base快速上手:开源可部署NLI模型镜像实操手册
  • c++ 20 有什么新的功能
  • 用Python处理SEED-VIG脑电数据:从PERCLOS标签到EEG特征提取的完整流程
  • MusePublic低配适配教程:16G显存降级方案与效果妥协平衡点
  • OpenClaw备份策略:ollama-QwQ-32B模型配置与技能数据的版本管理