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

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

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

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

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

输入格式

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

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

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

输出格式

每组数据输出一行结果。

数据范围

1≤T≤10,
1≤N≤10^5,
0≤ai≤10^6,
∑i=1nai≤10^6,
每个输入所有 N 之和不超过 10^5。

输入样例:

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

输出样例:

3
2
0

样例解释

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

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

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

   2 2 3
-> 2 5
-> 7

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

思路:1e5的约数个数为七百多个,所有石子个数的和,可以分为 i 堆,每堆sum / i个石子,又因为只能合并相邻的石子堆, 所以可以把所有石子分为若干段,每段石子总数为sum/i 。

由于约数个数只有七百多,所以时间复杂度O(N*700)

代码

#include<iostream>using namespace std;const int N = 1e5 + 10;int n;
int a[N];bool check(int cnt)
{for(int i=1,s=0;i<=n;i++){s+=a[i];if(s>cnt)  return false;if(s==cnt) s=0;}return true;
}
int main()
{int T;scanf("%d",&T);while(T--){scanf("%d",&n);int sum=0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);sum+=a[i];}for(int i=n;i>=0;i--) {if(sum%i==0 && check(sum/i)){printf("%d\n",n-i);break;}}}return 0;
}

上课睡觉(合并石子问题)相关推荐

  1. 【Acwing寒假2023每日一题】4366. 上课睡觉 - 枚举

    4366. 上课睡觉 - AcWing题库 思路: 我们可以从大到小枚举最后分成的堆数 最后分成的堆数越多 操作数越小 sum可以整除堆数 且 sum能被均分成cnt个/堆 如何判断sum能不能被均分 ...

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

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

  3. 蒟蒻吃药计划-治疗系列 #round 2 合并石子+乘积最大

    1.合并石子 <信息学奥赛一本通>第五版 P371 第三节 T1 我就直接开始讲吧: Warning:这个题目和 合并果子 不一样!不一样!不一样!不一样!不一样!不一样!不一样!不一样! ...

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

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

  5. 合并石子 四边形不等式优化

    题目描述 有一排石子,共n 堆.现要将石子有次序地合并成一堆.规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分.试设计一个算法,计算出将n堆石子合并成一堆的最小得分. ...

  6. 蓝桥杯-合并石子(java)

    算法提高 合并石子 时间限制:2.0s 内存限制:256.0MB问题描述在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求 ...

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

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

  8. 合并石子 区间dp水题

    合并石子 链接: nyoj 737 描述: 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N- ...

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

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

最新文章

  1. WIN7 常见问题及解决方法
  2. Java实现简单的队和栈
  3. struts工作流程
  4. Android之webView入门
  5. java mongodb 增删改查_java操作mongodb:基本的增删改查
  6. Core Location :⽤用于地理定位
  7. 用VC写Assembly代码(6)--附录3[X86指令使用详解]
  8. Ubuntu禁用网卡步骤(重启依然生效)
  9. html5 app 原理,html5打包成app应用的原理是什么?
  10. c语言输出字母随机数,你好,怎样用c语言输出一个1到100的随机数
  11. 游戏内存读取工具_不因内存弃旧爱,东芝Canvio Gaming移动硬盘评测
  12. SQLsever --数据库置疑
  13. 人工智能-马尔可夫模型
  14. 电脑总是意外从睡眠状态唤醒,可以找出原因然后解决
  15. 全网最全开源数据集 | 资源
  16. 跟风“涨价”,品牌老化,为何“0糖”的奥利奥不被消费者买账?
  17. C# wherewhereif
  18. PJzhang:百度网盘是如何泄露公司机密的?
  19. Codeforces Round #376 (Div. 2) D. 80-th Level Archeology —— 差分法 + 线段扫描法
  20. 在Java中12个常见的语法糖!

热门文章

  1. 鬼影、雨雪天气点云噪声处理
  2. Trends综述 | 李猛组-古菌在滨海生态系统的碳循环过程发挥的重要作用
  3. pyinstaller如何将自己写的py模块一并打包到exe中
  4. 键盘按键事件 通过键盘上下左右按键移动界面上图标
  5. 无线充电器出口欧盟CE认证RED指令测试分析
  6. 阿里云服务器注册域名进行备案访问Toncat
  7. 远程办公爆发式增长,数据安全成关键
  8. vue+elmentui +ueditor +数学公式 编辑器 ueditor
  9. PLC如何控制电子膨胀阀(暖通空调/制冷系统)
  10. 国产系列卫星平台介绍——环境系列、资源系列