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

打卡信奥刷题(3196)用C++实现信奥题 P8103 「LCOI2022」 Cow Merger

P8103 「LCOI2022」 Cow Merger

题目背景

Bessie 来到她的新家之后,Farmer John 突然意识到自己农场的大小不够了!

所以,Farmer John 需要把所有的奶牛合并到一个牛棚里。

题目描述

Farmer John 的农场里本来有nnn个牛棚,第iii个牛棚里住着aia_iai只牛。

我们定义一次合并i,j(ai≥aj)i,j(a_i\ge a_j)i,j(aiaj)两个牛棚的操作为:从iii号牛棚中拿出aja_jaj头牛,放入jjj号牛棚中。如果在合并结束后ai=0a_i=0ai=0,那么可以看做aia_iai被合并了,接下来的操作也与aia_iai无关。

由于时间不够了,他决定最多你111秒的时间。

输入格式

第一行包含一个整数TTT,表示数据组数。

对于第ttt组数据:

2t2t2t行包含一个整数nnn

2t+12t+12t+1行包含nnn个整数,第iii个整数为aia_iai

输出格式

对于每组数据:

如果你发现自己不可能达到目标,输出NO,否则输出YES

接下来一行,输出一个整数mmm表示操作次数。

接下来mmm行,每行输出两个数iiijjj(注意操作时应满足ai≥aja_i \ge a_jaiaj)。

有多解时可输出任意一组解。

输入输出样例 #1

输入 #1

3 4 1 2 3 2 5 3 9 6 18 12 5 2 3 5 7 11

输出 #1

YES 4 3 1 1 2 3 4 2 4 YES 6 2 1 1 2 4 3 2 3 4 5 3 5 NO

说明/提示

【数据范围与约定】

对于100%100\%100%的数据,1≤T≤51 \leq T \leq 51T51≤n≤1051 \leq n \leq 10^51n1050≤ai≤1090 \leq a_i \leq 10^90ai109

C++实现

#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;longlongn,i,t,k,a[100001],b,c,d,m,l[1000001],r[1000001];intmain(){scanf("%lld",&t);for(k=1;k<=t;k=k+1){scanf("%lld",&n);b=0;c=0;d=0;for(i=1;i<=n;i=i+1){scanf("%lld",&a[i]);b=__gcd(b,a[i]);}for(i=1;i<=n;i=i+1)a[i]=a[i]/b;for(i=1;i<=n;i=i+1)c=c+a[i];for(i=1;;i=i*2){if(i>c){d=1;break;}if(i==c)break;}if(d==1){printf("NO\n");continue;}else{printf("YES\n");m=0;while(1){b=0;c=0;d=0;for(i=1;i<=n;i=i+1){if(a[i]%2==1){c=c+1;if(c==2){m=m+1;c=0;if(a[i]>a[d]){l[m]=i;r[m]=d;a[i]=a[i]-a[d];a[d]=a[d]*2;}else{l[m]=d;r[m]=i;a[d]=a[d]-a[i];a[i]=a[i]*2;}}elsed=i;}}if(c==1)break;for(i=1;i<=n;i=i+1)b=__gcd(b,a[i]);for(i=1;i<=n;i=i+1)a[i]=a[i]/b;}printf("%lld\n",m);for(i=1;i<=m;i=i+1)printf("%lld %lld\n",l[i],r[i]);}}return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/734465/

相关文章:

  • EVK-IRIS-W101,集成Wi-Fi 6双频与蓝牙5.3的开CPU多无线电评估套件
  • 互联网大厂面试:Java SE 11, Spring Boot与微服务架构
  • 3分钟实现Figma中文界面:设计师必备的终极汉化指南
  • 稀疏自编码器在语言模型特征解释中的应用与实践
  • Ghost Bits:高位截断如何让 Java WAF 形同虚设
  • 机器人模仿学习与强化学习结合应用解析
  • Spring Boot mTLS 报 `keystore password was incorrect`:不一定是密码错了
  • 【项目实战】从 0 到 1 构建智能协同云图库(六):多级缓存与图片查询优化深度总结
  • 为Hermes Agent配置自定义模型提供商指向Taotoken服务
  • Shopee关联店铺的原因有哪些?Shopee多账号防关联指南
  • 终极Mac清理工具Pearcleaner:三步彻底卸载应用,让Mac重获新生
  • 生辰祭吾女 ☜请点击这里可看全文
  • 41 openclaw分布式会话管理:跨服务状态同步方案
  • 别再死记硬背了!用Python+NumPy实战帮你搞定线性代数核心术语(附中英对照表)
  • Laravel 12正式版AI工程化实战:如何在72小时内构建带RAG、流式响应与Token预算控制的智能后台系统?
  • 【Tidyverse 2.0权威前瞻】:2026自动化报告实战指南——仅3%数据科学家已掌握的R新范式
  • 5个秘诀打造电视盒子控制神器:手机变身智能遥控中心
  • QMCDecode:3步解锁QQ音乐加密格式,让音乐真正属于你
  • PvZ Toolkit终极指南:如何用开源游戏修改器解锁植物大战僵尸无限可能
  • 多模态思维链技术:AI图像生成与迭代优化新范式
  • vscode-toolbox:跨VS Code生态的扩展批量管理与环境配置工具
  • 五分钟完成Taotoken API Key配置并接入Python项目
  • 别再傻等后端接口了!手把手教你用MSW在前端独立Mock数据(附完整配置流程)
  • Transformer在机器人控制中的应用与优化
  • 生成随机数
  • 告别数传线!用树莓派给Pixhawk飞控做机载电脑,QGroundControl参数这么配就对了
  • 告别A*!用D-Star算法在Unity里做个能动态绕开障碍物的寻路Demo
  • 别再踩坑了!微信小程序登录时getUserProfile报错,我把wx.login和wx.getUserProfile分开写的完整流程分享
  • 终极纯净阅读体验:为什么ReadCat开源小说阅读器是你的最佳选择?
  • 2025实战:BiRefNet高分辨率二值化图像分割权重获取的5种创新方案