洛谷 P1090 合并果子 题解

这道题...桶!于是写了这篇题解
代码里面注释比较详细emmm就不多写了
还是对于新手很友好哒OwO
代码如下(没有套路)

#include<bits/stdc++.h>
using namespace std;
int a[100000000];//大桶 
int main()
{
    int n,T,i,o=0,Z=0,U=0,Y=0;//U 总体力 Z 一次合并后果子总数目
                              //o 计数(满2合并) Y 合并次数  
    scanf("%d",&n);
    for(i=0;i<n;i++)//数据读入 
    {
        scanf("%d",&T); 
        a[T]++;//记录数据 
    }
    for(i=1;;)//合并部分 
    {
        if(a[i]==0) i++;//防止后方a[i]--搞事情

        a[i]--;//取数 
        Z+=i;//加和 
        o++;//计数 
        if(o==2)//满足合并条件 
        {
            Y++;//增加合并数 
            U+=Z;//计入体力消耗 
            a[Z]++;//合并后新建果子堆 计算个数 

            o=0;//重置o 
            Z=0;//重置z
        }
        if(Y==n-1) break;//检查合并是否结束 
    }
    printf("%d",U);//输出总体力 
    return 0;
 } 
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 18:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务