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

【题解】Atcoder ABC432 C

思路

遇事不决先排个序。注意到如果要让所有人分得的糖果重量相等,那么糖更少的人需要的大糖更多。因每人分得糖果数量确定,所以总重量越大,每人需要的大糖数量就越多。为了让大糖总数最多,不妨给糖最少的人全分大糖,此时糖总重量就取到了上界。我们有了糖总重量,可以用二元一次方程组解出每个人需要的大糖数量,统计答案输出。如果不是正整数解,那么则无方案。

不过,该结论有一个漏洞:是否存在一种情况,使得糖最少的人不全分大糖有解,而全分大糖情况无解。我们考虑将糖最少的人的一颗小糖换成大糖会发生什么。将糖最少的人的一颗小糖换成大糖,相应地糖总重量增加了,其他的人也都需将一颗小糖换成大糖,该方案依然有解,直到糖最少的人的所有小糖都换成了大糖,方案一直有解。而且,其他人在换糖过程中将小糖耗尽的情况也不存在,因为他们的小糖数量不可能少余糖最少的人的小糖数量,否则他们的糖数量将少于糖最少的人。所以,如果糖最少的人不全分大糖有解,那么全分大糖的情况也一定有解。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,x,y,ans;
int a[N],sum;
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>x>>y;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+1+n);sum=a[1]*y;ans+=a[1];for(int i=2;i<=n;i++){int q;if(((sum-(a[i]*x))<0)||((sum-(a[i]*x))%(y-x))){cout<<-1;return 0;}q=(sum-(a[i]*x))/(y-x);ans+=q;}cout<<ans;return 0;
}

\((sum-a[i]\times x)\div (y-x)\) 即加减消元所推出的式子。

时间复杂度为 \(O(n\log n)\)

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

相关文章:

  • 赶due党救急!论文降重2小时搞定,不熬夜
  • 5 分钟快速入门 Gitlab CI/CD
  • 计算机论文模板推荐:8大平台+AI修改工具
  • 16 位 SAR ADC 逐次逼近型 ADC 模拟集成电路设计探秘
  • Lua语法深入1
  • 【题解】Luogu P13885 [蓝桥杯 2023 省 Java/Python A] 反异或 01 串
  • 期待回家,顺便写点年度总结
  • E No address added out of total 1 resolved地址绑定失败: No address added out of total 1 resolved errors:
  • 计算机论文题目推荐:8大平台+50例AI生成
  • 【笔记】Manacher
  • 八上期中考游记
  • C51_74HC165并口转串口
  • application.properties
  • 智能客服机器人产品设计
  • 【题解】Luogu B4185 [中山市赛 2024/科大国创杯小学组 2023] 倍数子串/子串
  • JavaScript 异常原因(Error Cause):实现分布式系统错误链追踪的序列化与反序列化
  • 毕业论文任务书范文推荐:7大平台+AI修改工具
  • Python字典与集合:解锁高效数据处理的关键,90%的人没吃透这几点
  • 天远多头借贷行业风险版API接口调用代码流程、接入方法以及应用场景
  • 详细介绍:完整事务性能瓶颈分析案例:支付系统事务雪崩优化
  • 计算机论文选题推荐:9大AI+热门方向排名
  • JavaScript 记录(Records)与 元组(Tuples):实现堆内存中不可变复合数据结构的内存布局
  • 5 分钟快速入门 Github Actions
  • 虚函数虚表
  • 线程并发编程,同步与互斥机制
  • Python列表与元组:搞懂这3个核心差异,再也不纠结用哪个
  • MQ消息队列相关知识与对比
  • 已有析音法
  • 完整教程:PPT导出为图片的格式选择:JPG与PNG的区别
  • 不能头脑简单地搞“凡是”:凡是偶数2n(n的变域是N)必∈N