栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

分糖果 题解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分糖果 题解

题目描述

老师组织一群孩子围成一个圈进行游戏,游戏结束后老师会根据每个孩子的表现进行评分并给予糖果奖励。
每个孩子只能看见与自己相邻的 2 个孩子(左边的和右边的)的情况,只会关心相邻的且比自己评分低的同学的糖果数(如果相邻 2 个孩子的评分相等,则不关心)。为保证公平,相邻的孩子中,评分高的孩子必须获得更多的糖果(如果左右相邻 2 个孩子的评分相等,则不关心,即分最少的糖果1 个)。同时,为鼓励孩子的积极性,每个孩子至少都能拿到 1 个糖果。
现在需要你帮助老师来分发糖果,问怎么分配才能使要准备的糖果数最少?计算出需要的最少糖果数。

输入

输入有二行,第一行一个正整数n表示孩子的个数。
第二行n个非负整数,相邻的数用空格隔开,分别表示孩子的表现评分。

输出

一个整数,表示最少需要准备的糖果数。

样例输入 Copy

【样例1】
3
1 2 0
【样例2】
4
2 3 3 3

样例输出 Copy

【样例1】
6
【样例2】
6

样例输出 Copy

【样例1】
6
【样例2】
6

找到最低分的那个人,让他的糖果数为1,然后再去判断他的右边的人的糖果数,如郭当前的糖果无法满足要求,就从当前的人的糖果开始,往回改

#include
#include
#include
#include
using namespace std;
struct node{
    int le,v,ri;
};
vectorcc;
int ca[100005]={0};
int n,t=0,it,M=1000,m;
int main(){
    cin>>n;
    while (t++>m;
        if(mcc[cc[j].ri].v&&ca[j]<=ca[cc[j].ri]){
                        ca[j]=ca[cc[j].ri]+1;
                    }
                    else {
//                        cout<<" lll "<cc[cc[i].le].v){
            ca[i]=ca[cc[i].le]+1;
        }
        else if(cc[i].v==cc[cc[i].le].v){
            ca[i]=1;
        }
        else if(cc[i].vcc[cc[j].ri].v&&ca[j]<=ca[cc[j].ri]){
                        ca[j]=ca[cc[j].ri]+1;
                    }
                    else {
//                        cout<<" lll "<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/648151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号