牛客练习赛76 校园活动 c++

本文介绍了牛客练习赛76的校园活动问题,学校试图将了解程度不同的OIer分为小组进行公平游戏。题目要求判断是否能将队伍分成多个连续子队列,使得每个小组的了解程度之和相等。解题思路包括将输入转换为数组,检查能否将总和平均分成整数个小组,并通过动态调整组数来验证分组可能性。
摘要由CSDN通过智能技术生成

校园活动

点我跳转原题

牛牛中学为了给本校的OIer放松心情,决定举报一场校园活动。
现在学校的共有 个OIer,学校想把他们分为一些小组进行一个团队游戏。学校先了解了一下每个同学对这个团队游戏的了解程度。
为了游戏的公平,学校需要使分组后的每一个小组内所有人对游戏的了解程度之和相等,
但同学们并不希望完全由学校来给他们分组,所以这 个人站为了一行,学校只能将队列中一段完整的子队列作为一个小组。
换句话说,如果你想让位置为 x和 y(x<y) 的人在一个小组里,你就必须让x 和y
之间的所有人在这个组里面。
当然,我们知道如果只有一个小组是无法进行游戏的。
你需要判断是否可以将他们成功分组进行游戏,如果能成功分组进行游戏就打印出最多能分为多少个小组,不能成功分组进行游戏(所有人都在同一个组里)打印“-1”。在这里插入图片描述
如果能成功分组,打印出最多能分为多少个小组,不能成功分组(所有人都在同一个组里)打印“-1”。

输入

5
31113

输出

3

解题思路:
题目的意思是把整个队列分成多个连续,数量可不相等的小组,所有小组的总和相等
∴我们不妨先将字符串转换为对应的数组,在转换的过程中记录一下了解程度之和
然后假设能分成x组,然后看一下每组能不能分到一个整数(sum%x==0)
如果可以,再进行判定,定义一个变量为每组分配的了解程度,如果出现大于了该变量,说明不匹配,减少组数继续判定
如果不存在这种情况,那么在最后输出-1

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
using namespace std;
int b[2001];
int sum;
int main() {
   
	int n;
	scanf("%d",&n);//输入数据
	getchar();//把空格读了,防止读不到字符串
	string a;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zengyz-wh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值