
Flower
问题分析:每次操作必须修剪n-1朵花,剩下的那一朵保持不变。我们需要找到一种方法,使得所有花的高度最终相同。 关键观察:如果我们能够将所有花的高度调整为相同值h,那么每朵花的高度h必须等于其初始高度减去所有在它被修剪时减去的数的总和。 数学条件:为了使所有花的高度相同,必须满足最大高度与其他所有高度的总和之差能被n-1整除。具体来说,计算最大高度与其他所有高度的总和的差值,如果这个差值能被n-1整除,那么就可以实现目标,否则不行。 实现步骤:
发布日期:2021-05-08 16:30:27
浏览次数:18
分类:精选文章
本文共 1135 字,大约阅读时间需要 3 分钟。
要解决这个问题,我们需要确定是否可以通过每次修剪n-1朵花,使得所有花的高度最终相同。如果可以实现,就输出需要的次数,否则输出-1。
方法思路
- 计算最大高度与其他所有高度的总和的差值。
- 检查这个差值是否能被n-1整除。
- 如果可以整除,输出次数;否则输出-1。
解决代码
#include#include using namespace std;int a[100005], n, sum, i;int main() { ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); int t; cin >> t; while (t--) { cin >> n; sum = 0; for (i = 0; i < n; i++) { a[i] = cin >> i; } sort(a, a + n); int max_val = a[n - 1]; for (i = 0; i < n - 1; i++) { sum += (max_val - a[i]); } if (sum % (n - 1) != 0) { cout << -1; } else { int count = sum / (n - 1); cout << count; } }}
代码解释
- 输入处理:读取测试用例的数量t,然后对于每个测试用例,读取n和n个花的高度。
- 排序:对花的高度进行排序,以便后续计算。
- 计算总和:计算最大高度与其他所有高度的总和的差值。
- 检查条件:检查这个总和是否能被n-1整除。如果能,输出需要的次数;否则输出-1。
通过这种方法,我们可以有效地判断是否可以通过每次修剪n-1朵花,使得所有花的高度相同,并输出需要的次数或-1。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月15日 20时08分22秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
乒乓球问题
2023-01-23
回溯法介绍
2023-01-23
有了Trae,人人都是程序员的时代来了
2023-01-23
程序员都看不懂的代码
2023-01-23
LLM+多智能体协作:基于CrewAI与DeepSeek的邮件自动化实践
2023-01-23
500套精美Logo样机模板可直接套用、轻松制作炫酷logo
2023-01-23
Accessibility
2023-01-23
CentOS 系列:CentOS 7文件系统的组成
2023-01-23
Docker部署postgresql-11以及主从配置
2023-01-23
EnvironmentNotWritableError: The current user does not have write permissions to the target environm
2023-01-23
kali安装docker(亲测有效)
2023-01-23
PHP系列:PHP 基础编程 2(时间函数、数组---实现登录&注册&修改)
2023-01-23
PHP系列:使用PHP实现登录注册功能的完整指南
2023-01-23
"WARNING: Increasing RAM size to 1GB" and "Cannot set up guest memory 'xxx.ram': Invalid argument".
2023-01-23
04-docker-commit构建自定义镜像
2023-01-23
05-docker系列-使用dockerfile构建镜像
2023-01-23