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

CF2144D

场上想了挺久才想到做法。
但是其实题不难。
首先发现 \(c_i\) 的数据范围不大,可以考虑枚举 \(x\)
接着考虑如何每次枚举 \(x\) 完之后,计算当前 \(x\) 的答案。
用一个桶记录一下每个 \(c_i\) 出现的次数。
接着对于一个 \(x\),我们用一个变量 \(j\) 遍历 \(x\) 的倍数,可以发现能重用的标签对应的原标签范围为 \(jx\sim(j+1)x-1\)
所以对桶再做一个前缀和就可以快速计算每个 \(x\) 的答案了。
复杂度是 \(O(M\log M)\) 的。

#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define fir first
#define sec second
//#define re register
#define il inline
#define ios ios::sync_with_stdio(0),cin.tie(0)
#define int ll
using namespace std;
const int N=200005;
int t,n,y,c[N],f[N],pre[N];
signed main(){ios;cin>>t;while(t--){cin>>n>>y;memset(f,0,sizeof f),memset(pre,0,sizeof pre);int mx=0,ans=-1e18;;for(int i=1;i<=n;i++){cin>>c[i];mx=max(mx,c[i]);}for(int i=1;i<=n;i++)if(c[i]<=mx)f[c[i]]++;for(int i=1;i<=mx;i++)pre[i]=pre[i-1]+f[i];for(int x=2;x<=mx+1;x++){int sum=0,re=0;for(int k=1;x*k-x+1<=mx;k++){int l=x*k-x+1,r=min(x*k,mx);int cnt=pre[r]-pre[l-1];if(cnt>0)sum+=k*cnt,re+=min(f[k],cnt);}ans=max(ans,sum-y*(n-re));}cout<<ans<<'\n';}return 0;
}
http://www.hskmm.com/?act=detail&tid=36890

相关文章:

  • 折腾笔记[33]-使用uiautomation自动重复读取图片(被控程序为.net框架)
  • switch的简单运用
  • 软工第三次作业——结对项目
  • 10.22总结
  • AutoGen框架入门:5个核心概念搭建智能体协作系统
  • 使用google上colab编辑器
  • 16
  • 英语_阅读_The power of curiosity_待读
  • goden-eye 靶场
  • 20232424 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 记录docker desktop wsl2奔溃的查询思路
  • 股票操作统计分析报告 - 2025年10月22日
  • 软工结对作业
  • 20232419 2025-2026-1《网络与系统攻防技术》实验二实验报告
  • dfs模板(p1036)
  • Java中的修饰符
  • CF2078D Scammy Game Ad
  • [树状数组]P11855 [CSP-J2022 山东] 部署 题解
  • C#/.NET/.NET Core技术前沿周刊 | 第 58 期(2025年10.13-10.19)
  • 行列式+矩阵树定理
  • 测试金字塔与测试左移:提升软件质量的双翼策略
  • 兼职MOer的幸福生活
  • 20232323 2025-2026-1《网络与系统攻防技术》实验二实验报告
  • 完整教程:阿里云上CentOS6.9(停止维护)导致的yum下载chrony失败如何解决?
  • LGP5494 [LG TPLT] 线段树分裂 学习笔记
  • 股票操作统计分析报告 - 2025-10-22
  • 随笔测试
  • 文档智能信息抽取技术在金融财税领域的应用研究与发展前景
  • 今日策略:年化436%,回撤7%,夏普比5.28, deap因子挖掘重构,附python代码 - 详解
  • 51单片机实践之数码管电子时钟/时间呈现及其设置