CF793A Oleg and shares 题解
2024-09-02 19:51:30
Content
有 \(n\) 支股票,第 \(i\) 支股票原价为 \(a_i\) 卢布。每秒钟可能会有任意一支股票的价格下降 \(k\) 卢布,以至于降到负数。求所有股票的价格均变得相同所要经过的最短时间,或者这不可能。
数据范围:\(1\leqslant n\leqslant 10^5,1\leqslant k,a_i\leqslant 10^9\)。
Solution
因为股票的价格只能够下降,因此肯定是要求最后都要降到 \(n\) 支股票的价格的最小值 \(x\)。然后,因为每秒下降 \(k\) 卢布,所以,只要有 \(i\) 使得 \(k\nmid a_i-x\) 那么就不可能满足题目的条件,否则,答案就是 \(\sum\limits_{i=1}^n\dfrac{a_i-x}{k}[a_i\neq x]\)。
Code
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
int a[100007];
long long ans;
int main() {
int n, k;
scanf("%d%d", &n, &k);
for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
for(int i = 2; i <= n; ++i) {
if((a[i] - a[1]) % k) return printf("-1"), 0;
ans += (a[i] - a[1]) / k;
}
printf("%lld", ans);
}
最新文章
- Dephi 和 Pascal 的关系
- 洛谷八月月赛Round1凄惨记
- Java Hour 65 [译] Java 6.0 说明
- JSON代码小计
- javaweb学习总结(二十六)——jsp简单标签标签库开发(二)
- SQL Server Profiler:使用方法和指标说明
- 高效查看MySQL帮助文档的方法
- JavaSE——TCP网络编程(二)
- VS2012给同一个解决方案添加多个项目
- vs2008+cmake2.8+OpenCV2.8.4配置过程中OpenCV.sln重编译部分工程失败
- Android - 封装Fragment不依赖于Activity
- cobbler_web安装
- 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞
- Servlet运行过程详解
- ES6 学习笔记(一)let,const和解构赋值
- 如何编写一个带命令行参数的Python文件
- Codeforces Round #436 (Div. 2) C. Bus
- vue-微信支付or支付宝支付片段
- javeEE第一周
- stream to byte[], byte[] to srting