当前位置: 首页 > article >正文

分糖果(条件分配)

题目:老师想给孩子们分发糖果,有N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:

每个孩子至少分配到 1 个糖果。

相邻的孩子中,评分高的孩子必须获得更多的糖果。

那么这样下来,老师至少需要准备多少颗糖果呢?

示例

输入: [1,0,2]

输出: 5

解释: 可以分别给这三个孩子分发 212 颗糖果。

#include<iostream>
using namespace std;

int main(){
	int n;
	cin>>n;
	int a[n];
	int b[n];//每个人的糖果数 
	int min_i=0;
	for(int i=0;i<n;i++){
		cin>>a[i];
		if(a[i]<a[min_i]) min_i=i;
	}
	b[min_i]=1;//评分最小的孩子给1个 
	for(int i=min_i+1;i<n;i++){
		if(a[i]>a[i-1]) b[i]=b[i-1]+1;
		else if(a[i]==a[i-1]) b[i]=b[i-1];
		else b[i]=1;
	}
	for(int i=min_i-1;i>=0;i--){
		if(a[i]>a[i+1]) b[i]=b[i+1]+1;
		else if(a[i]==a[i+1]) b[i]=b[i+1];
		else b[i]=1;
	} 
	//求和
	int sum=0;
	for(int i=0;i<n;i++){
		sum+=b[i]; 
	} 
	cout<<sum<<endl;
	return 0;
}

 


http://www.kler.cn/a/394216.html

相关文章:

  • 缓存与数据库不一致的解决方案:深入理解与实践
  • Golang | Leetcode Golang题解之第559题N叉树的最大深度
  • uni-app移动端与PC端兼容预览PDF文件
  • 如何在算家云搭建Peach-9B-8k-Roleplay(文本生成)
  • pySpark乱码
  • 【C++】一种针对代码的连续条件检查方案,累计布尔结果
  • Works With线上开发者大会将提供物联网行业深入的专业知识和技能
  • uniapp form表单校验
  • python爬虫获得店铺的所有商品
  • 【JavaEE初阶 — 多线程】生产消费模型 阻塞队列
  • 基于Java的企业资产管理系统
  • Springboot 日志处理(非常详细)
  • 从opencv-python入门opencv--图像处理之图像滤波
  • golang HTTP基础
  • 【计网】实现reactor反应堆模型 --- 多线程方案优化 ,OTOL方案
  • C++算法练习-day39——654.最大二叉树
  • flutter下拉刷新上拉加载的简单实现方式三
  • 实习冲刺第二十一天
  • 手机怎么玩steam游戏?随时随地远程串流玩steam游戏教程
  • 【JavaWeb】JavaWeb入门之XML详解
  • 【MATLAB】目标检测初探
  • eBay接受支付宝付款!卖家如何接住新流量?
  • Node.js版本管理工具nvm使用教程
  • Scala的Array
  • 2.6 以太网扩展技术
  • 实验6记录网络与故障排除