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

cf ratring1600 7月29日

C. Equal Frequencies

地址链接
cnt数组清空,统计原串中字母的数量

cin>>n>>s;fill(cnt,cnt+26,0);for(inti=0;i<s.size();i++)++cnt[s[i]-'a'];

把每种字母数量从大到小排序

structNode{intid,cnt;}v[26];boolcmp(Node a,Node b){returna.cnt>b.cnt;}for(inti=0;i<26;i++)v[i]={i,cnt[i]};sort(v,v+26,cmp);

统计一下保留种类数为多少时
需要做出的更改最少
可以枚举一下种类数

intans=0x3f3f3f3f3f3f3f3fll,ansid=0;for(intused=1;used<=26;used++){if(n%used!=0)continue;intm=n/used;intnow=0;for(inti=0;i<used;i++)now+=abs(v[i].cnt-m);for(inti=used;i<26;i++)now+=v[i].cnt-0;now/=2;ans=min(ans,now);if(ans==now)ansid=used;}cout<<ans<<endl;

更新调整后每种字母的个数

for(inti=0;i<ansid;i++){cnt[v[i].id]=n/ansid;}for(inti=ansid;i<26;i++){cnt[v[i].id]=0;}

先确定字符串的哪些位置需要修改
求出修改后的字符串

for(inti=0;i<s.size();i++){boolvis=0;for(inti=0;i<used;i++){if(s[i]-'a'==v[i].id)vis=true;}if(!vis)s[i]=' ';elseif(cnt[s[i]-'a'])cnt[s[i]-'a']--;elses[i]=' ';}for(inti=0;i<s.size();i++){if(s[i]!=' ')continue;intvis=-1;for(intj=0;j<ansid;j++){if(cnt[v[j].id]){vis=v[j].id;break;}}s[i]=vis+'a';cnt[vis]--;}cout<<ans<<endl;

完整代码

#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;intn;string s;intcnt[26];structNode{intid,cnt;}v[26];boolcmp(Node a,Node b){returna.cnt>b.cnt;}voidsolve(){cin>>n>>s;fill(cnt,cnt+26,0);for(inti=0;i<s.length();i++)++cnt[s[i]-'a'];intans=0x3f3f3f3f3f3f3f3fll,ansid=0;for(inti=0;i<26;i++)v[i]={i,cnt[i]};sort(v,v+26,cmp);for(intused=1;used<=26;used++){if(n%used!=0)continue;intm=n/used;intnow=0;for(inti=0;i<used;i++)now+=abs(v[i].cnt-m);for(inti=used;i<26;i++)now+=v[i].cnt;now/=2;ans=min(ans,now);if(ans==now){ansid=used;}}cout<<ans<<endl;for(inti=0;i<ansid;i++)cnt[v[i].id]=n/ansid;for(inti=ansid;i<26;i++)cnt[v[i].id]=0;for(inti=0;i<s.length();i++){boolvis=false;for(intj=0;j<ansid;j++){if(v[j].id==s[i]-'a'){vis=true;break;}}if(!vis)s[i]=' ';elseif(cnt[s[i]-'a'])--cnt[s[i]-'a'];elses[i]=' ';}for(inti=0;i<s.length();i++){if(s[i]!=' ')continue;intvis=-1;for(intj=0;j<ansid;j++)if(cnt[v[j].id]){vis=v[j].id;break;}s[i]=vis+'a';--cnt[vis];}cout<<s<<endl;return;}signedmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);intt;cin>>t;while(t--)solve();return0;}
http://www.jsqmd.com/news/1312361/

相关文章:

  • 清华团队研发活体水产品智能分拣系统,柔性机器人实现龙虾“安全着陆”
  • 宁波鄞州区装饰装修优选:金诚装饰一体化整装服务详解 - 国麟测评
  • 基于微信小程序的心理咨询预约系统(源码+LW+部署讲解)
  • CUDA安装与配置全攻略:从驱动到cuDNN的深度学习环境搭建
  • AI辅助编程实战:Python实现微信聊天记录本地导出工具
  • 2026企业文件管理系统横向对比测评|通用选型标准与场景适配指南
  • 青岛中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖市南/市北/崂山/李沧等全域各区 专治不制冷/漏水/异响/跳闸
  • 算法复杂度分析:大O、大Ω、大θ、小o、小ω的完整指南
  • C++表达式求值:从双栈算法到编译器前端核心原理
  • 1.54英寸三色电子纸模块驱动指南:从SPI原理到多平台实战
  • 2026年杜邦POM500P甄选指南:这7个应用场景为何值得优先考虑? - geo交流
  • Go 文件与 IO 操作知识点总结:操作系统底层、源码原理与 bufio 流式高性能实战
  • 2026年国内防静电尼龙改性塑料定制厂家优选指南:3家值得关注的供应商推荐 - geo交流
  • 测绘工程中的地形类别:从量化标准到智能分类的实战解析
  • ASI/SAGE供应商入驻全解析:硬性门槛、软实力与北美B2B市场准入指南
  • 不靠营销靠实力[特殊字符]Paperxie才是论文工具的全能天花板
  • 在Jetson Orin Nano/NX 8GB上部署优化版llama.cpp:Jetson-Claw实战指南
  • 哥德巴赫猜想
  • 传统固定资产管理太麻烦?二维码管理让资产盘点快人一步
  • 2026年临沂口碑比较好的冷链输送机订制订做厂家优选指南:这4家值得对比 - geo交流
  • ZMK键盘固件完全指南:从零打造你的智能无线键盘
  • Zabbix、Prometheus、Open-Falcon三大监控框架深度对比与实战选型指南
  • 如何在5分钟内免费解锁WeMod专业版?Wand-Enhancer终极指南
  • 从Joomla配置泄露到Apport提权:Devvortex靶机渗透实战解析
  • 2026年评价高的混双色注塑机实力厂家推荐:这份甄选指南请收好 - geo交流
  • QQ影像停更了?这些本地功能还能用
  • AI自主入侵攻防实战:风险拆解、架构重构与防御部署指南
  • Unity DOTS中EntityCommandBufferSystem的原理与实战应用
  • Flink状态管理全解析:从核心原理到生产环境调优实践
  • AI公众认知调查报告解读:从技术风险到产品信任的实践指南