题目1431:蓝桥杯2014年第五届真题-分糖果

//循环队列问题

#include<iostream>

#include<vector>

using namespace std;

int main() {

int n;

cin >> n;

vector<int> candies(n);

// 输入初始糖果数

for(int i = 0; i < n; i++) {

cin >> candies[i];

}

int teacherGiven = 0; // 老师补发的糖果总数

while(true) {

// 检查是否所有小朋友糖果数相同

bool allSame = true;

for(int i = 1; i < n; i++) {

if(candies[i] != candies[0]) {

allSame = false;

break;

}

}

if(allSame) break;

// 第一阶段:分糖(需要临时保存)

vector<int> temp = candies;

// 每个小朋友分一半给左手边的孩子

for(int i = 0; i < n; i++) {

int give = temp[i] / 2; // 要给出的糖果数

// 给左边的小朋友(注意循环)

int left = (i - 1 + n) % n;//循环关键

candies[left] += give;

candies[i] -= give;

}

// 第二阶段:老师补糖

for(int i = 0; i < n; i++) {

if(candies[i] % 2 != 0) { // 如果是奇数

candies[i]++; // 补1个糖果

teacherGiven++; // 计数增加

}

}

}

cout << teacherGiven << endl;

return 0;

}

相关推荐
421!1 分钟前
ESP32学习笔记之GPIO
开发语言·笔记·单片机·嵌入式硬件·学习·算法·fpga开发
夏日听雨眠6 分钟前
数据结构(单循环链表)
数据结构·链表
智算菩萨9 分钟前
【How Far Are We From AGI】4 AGI的“生理系统“——从算法架构到算力基座的工程革命
论文阅读·人工智能·深度学习·算法·ai·架构·agi
福赖12 分钟前
《算法:生产车间》
算法
-Excalibur-15 分钟前
IP数据包在计算机网络传输的全过程
java·网络·c++·笔记·python·网络协议·智能路由器
空空潍20 分钟前
LeetCode力扣 hot100一刷完结
算法·leetcode
leaves falling23 分钟前
搜索插入位置(第一个≥target的位置)
算法
历程里程碑23 分钟前
41 .UDP -3 群聊功能实现:线程池助力多客户端通信
linux·开发语言·网络·数据结构·c++·网络协议·udp
lcreek23 分钟前
LeetCode 1162.地图分析
算法·leetcode·bfs
山栀shanzhi25 分钟前
【FFmpeg】是什么是未压缩的裸流?
c++·ffmpeg