有 N 堆石子,每堆的石子数量分别为 a1,a2,…,aN。

你可以对石子堆进行合并操作,将两个相邻的石子堆合并为一个石子堆,例如,如果 a=[1,2,3,4,5],合并第 2,3 堆石子,则石子堆集合变为 a=[1,5,4,5]。

我们希望通过尽可能少的操作,使得石子堆集合中的每堆石子的数量都相同。

请你输出所需的最少操作次数。

本题一定有解,因为可以将所有石子堆合并为一堆。

输入格式
第一行包含整数 T,表示共有 T 组测试数据。

每组数据第一行包含整数 N。

第二行包含 N 个整数 a1,a2,…,aN。

输出格式
每组数据输出一行结果。

数据范围

输入样例:

3
6
1 2 3 1 1 1
3
2 2 3
5
0 0 0 0 0

输出样例:

3
2
0

样例解释
第一组数据,只需要用 3 个操作来完成:

1 2 3 1 1 1
-> 3 3 1 1 1
-> 3 3 2 1
-> 3 3 3

第二组数据,只需要用 2 个操作来完成:

2 2 3
-> 2 5
-> 7

第三组数据,我们什么都不需要做。

解题思路:

首先对相邻的石子进行合并,设最后每堆石子数目是cnt,所有石子总数为sum,最后一定有解,因为cnt可以等于sum。最后每堆石子数相同,代表cnt一定是sum的一个约数。
因此这个题就可以转化成在sum的约数中求解答案了。
那么究竟什么样的约数cnt是合法的呢?

#include<iostream>
using namespace std;
const int N=100010;
int num[N];//存储每次需要检测的石子数
int n;//每次测试输入的堆数
//check检测sum的约数是不是合法的,即最后能不能分成数量相同的堆
bool check(int cnt){//枚举所有堆,相加作为一段,看这一段的数量是不是等于cntfor(int i=0,s=0;i<n;i++){s+=num[i];if(s>cnt) return false;if(s==cnt) s=0;}return true;
}
int main(){int t;cin>>t;while(t--){cin>>n;int sum=0;//所有堆石子数相加的总和for(int i=0;i<n;i++){cin>>num[i];sum+=num[i];}//通过枚举堆数,找到最少的操作次数,剩下的堆数越多,操作次数越少for(int i=n;i;i--){if(sum%i==0 && check(sum/i)){cout<<n-i<<endl;//i是最后剩下的堆数,n-i就是需要的操作数break;}}}system("pause");return 0;
}

Acwing4366上课睡觉相关推荐

  1. Acwing-4366. 上课睡觉

    假设最终答案为每堆石子均为cnt个,cnt一定可以整除sum(石子的总数),我们可以依次枚举答案.sum小于等于10^6,所以cnt的数量等于sum约数的个数,10^6范围内,约数最多的数为72072 ...

  2. 学生上课睡觉班主任怎么处理_学生上课睡觉,老师的管与不管,不是你看到的那么简单...

    学生上课睡觉的原因,可以分为正常的和不正常的. 正常的,一种是在天气热的时候,人容易犯困,学生会有上课睡觉的:另一种是因为学习熬夜,导致的白天没精神而上课的时候控制不住自己睡觉. 不正常的,一种是熬夜 ...

  3. 带套属于安全行为吗_教师不管学生上课睡觉的行为,属于不负责任吗?建议收藏!...

    这是当老师的失职 组织教学是课堂重中之重,课堂上看到学生睡觉,不管不问,听之任之,这是当老师的失职,失德行为,是误人子弟之举!一个学生睡觉你不管不问,接下来就有几个甚至更多,教学质量如何谈起?上课有学 ...

  4. 学生上课睡觉班主任怎么处理_班主任案例:学生上课睡觉应对策略

    班主任案例:学生上课睡觉应对策略 我正在讲台上津津有味地分析着<苏州园林>那刻意追求自然情趣的美妙,忽然发现最后一排的一个同学趴在了桌子上,我虽然嘴上没有停止讲解,但内心对这个现象早就懊恼 ...

  5. 学生上课睡觉班主任怎么处理_学生上课睡觉鼾声如雷,老师要拍照发家长群吗?一线教师为你分析...

    原本的差生,经过时代的变迁,完成了多次"华丽转身":先是转变为"学困生",后来演变为"潜能生",估计现在那些教育专家还在酝酿别的名称.不过& ...

  6. 学生上课睡觉班主任怎么处理_“佛系教师”语录:小孩是别人的,成绩是校长的,饭碗是自己的...

    不管是哪个一线教师,如果发现自己的学生上课的时候睡觉,心中或多或少会有一些疙瘩,有的甚至会暴跳如雷,直接用"雷霆手段"将其"轰醒".学生上课睡觉,老师该怎样处理 ...

  7. 学生上课睡觉班主任怎么处理_学生上课睡觉怎么办

    重庆市梁平中学语文组    徐本国 进入高二以来,随着学生学习情况的改变,学生分化现象十分严重.成绩好的学生学习劲头十足,上课精神抖擞,下课作业完成认真,考试效果十分理想.成绩后进的学生学习劲头很小, ...

  8. 学生上课睡觉班主任怎么处理_学生上课睡觉老师该怎么办:高级教师教你一招...

    原标题:学生上课睡觉老师该怎么办:高级教师教你一招 学生上课睡不睡觉与学校.班主任.科任教师和学生本人都有关系.当然,这个问题只问了学生上课睡觉,老师该怎么办,我以我的经历来说一下,现在的学生多数有非 ...

  9. 学生上课睡觉班主任怎么处理_学生上课睡觉老师应该怎么办?

    我最近被这个问题困扰着.寝食难安啊.急需各位高人的指点. 我说一下我的具体情况.我们学校是破烂学校,差生多,高中,高考时考上本科的一个班也就四五个吧,最多不到十个. 我是教英语的.绝大多数学生都是农村 ...

最新文章

  1. 用c语言设计一个菜单界面_用这7个方法设计菜单,让餐厅的利润暴涨
  2. 《像计算机科学家一样思考Python(第2版)》——2.6 字符串操作
  3. Windows远程桌面连接并传输文件
  4. php window.onload,window.onload 触发时机问题
  5. Python 删除文件中的乱码
  6. .Net Core实现健康检查
  7. UNIX网络编程——select函数的并发限制和 poll 函数应用举例
  8. 505B. Mr. Kitayuta‘s Colorful Graph
  9. 【转】C++中如何区分构造函数与重载operator()得到的仿函数?
  10. 基于Wi-Fi的室内定位在美团总部的实践和应用(上)
  11. 磁盘阵列怎么做_设计与后期制作该怎么选择笔记本电脑?朋克老师来教你
  12. 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
  13. Java函数式编程(一)–Function的使用
  14. 文件名变乱码怎样修复?
  15. 高斯过程回归,得到预测标签和不确定度度
  16. 《站在两个世界的边缘》 程浩,一个认真生活过的人
  17. [51nod1457]小K vs. 竹子
  18. java设计模式(1)
  19. 控制图简明原理及Plotly实现控制图Python实践
  20. 希腊字母含义及快捷键输入

热门文章

  1. AES对称加密算法原理
  2. Fortran 逻辑运算 与 循环(DO)相关
  3. 你能向我解释范畴 论里的monad吗?
  4. 商业模式第一篇:十种商业模式解析
  5. warning LNK4075: 忽略”/EDITANDCONTINUE”(由于”/INCREMENTAL:NO”规范)
  6. 德国面粉分类(转载)
  7. 【卖家必看干货】4大高效评价请求模板,激活各类买家
  8. 从10个角度来检测自己是不是一个合格的前端工程师
  9. NKOI 1006 护卫队
  10. 高中英语教师资格证考试成功通过前辈备考经验分享