P1090 合并果子 题解

Doveqise

2019-01-07 17:10:50

Solution

这道题...桶!于是写了这篇题解 代码里面注释比较详细emmm就不多写了 还是对于新手很友好哒OwO 代码如下(没有套路) ```cpp #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; } ```