当前位置: 首页 > 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.zskr.cn/news/27772.html

相关文章:

  • 科学计算库Numpy
  • 10.22总结
  • 使用google上colab编辑器
  • 20251022周三日记
  • 图图
  • 软工结对作业
  • dfs模板(p1036)
  • CF2078D Scammy Game Ad
  • [树状数组]P11855 [CSP-J2022 山东] 部署 题解
  • C#/.NET/.NET Core技术前沿周刊 | 第 58 期(2025年10.13-10.19)
  • 完整教程:阿里云上CentOS6.9(停止维护)导致的yum下载chrony失败如何解决?
  • k8s 常用命令 - 实践
  • 申威架构ky10安装php-7.2.10.rpm详细步骤(国产麒麟系统64位)
  • Unity 虚拟仿真实验中设计模式的使用 ——策略模式(Strategy Pattern) - 指南
  • vue2:v-if和v-show的区别以及造成的影响
  • P6845 题解
  • office2024绿色精简版
  • LGP3694 邦邦的大合唱站队 学习笔记
  • TRAE 设计团队如何玩转 Vibe Coding(上)|高美感页面生成篇
  • 详细介绍:观察者模式(Observer Pattern)定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
  • LeeCode_226反转二叉树
  • TRAE 设计团队如何玩转 Vibe Coding(下)|设计工具生成与提效篇
  • 取证-windbg和dmp,以及文件分析基本流程
  • 20232422 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 完整教程:C++项目:仿muduo库高并发服务器-------connection模块
  • 营销数字化专家要求
  • 完整教程:LeapMotion_Demo演示
  • [题解]P11126 [ROIR 2024] 三等分的数组 (Day 2)
  • 1111111111111
  • 数据库学习篇(持续更新中)