Boxes And Balls CodeForces
来源:互联网 发布:php mysql 长连接 编辑:程序博客网 时间:2024/06/05 20:44
题面
题意
一开始有一个数,每次可以将一个数分成2或3组,并分别放入一组,代价为这n个数的大小,使最后有n组,并给出每组的数字大小
方法
可以看作将n个数合并,每次可以合并2个或3个,代价为几个数的和,最后合并成一个数.
从贪心的角度来看,3个3个合并最优,因为每次可以减少两个数,事实上在奇数个数时确实如此,有偶数个数时,因为最后只剩下了两个数,代价不是最小的,故可以先加一项0,再当奇数个数来处理.
上述方法可以用堆来实现,每次合并最小的三个数.注意,n为1时要特判,答案为0.
代码
#include<bits/stdc++.h>#define ll long longusing namespace std;priority_queue<ll,vector<ll>,greater<ll> >pq;ll n,ans,tmp;int main(){ ll i,j,p; cin>>n; for(i=1;i<=n;i++) { scanf("%lld",&p); pq.push(p); } if(n==1) { cout<<0; return 0; } if(n%2==0) pq.push(0); while(pq.size()>3) { tmp=pq.top(); pq.pop(); tmp+=pq.top(); pq.pop(); tmp+=pq.top(); pq.pop(); ans+=tmp; pq.push(tmp); }// cout<<pq.empty(); while(!pq.empty()) { ans+=pq.top(); pq.pop(); } printf("%lld",ans);}
阅读全文
1 0
- Balls and Boxes CodeForces
- Boxes And Balls CodeForces
- codeforces 884D Boxes And Balls (哈夫曼树)
- codeforces 884 D. Boxes And Balls
- Balls and Boxes
- Boxes and Balls
- HDU5810 Balls and Boxes
- HDU5810-Balls and Boxes
- Boxes and Balls UVALive
- Boxes and Balls UVALive
- codeforces-884D Boxes And Balls(思维、三叉哈夫曼树)
- Educational Codeforces Round 31 D. Boxes And Balls
- Codeforces 890 D. Boxes And Balls (哈夫曼)
- Educational Codeforces Round 31- D. Boxes And Balls
- UVALive 7500 Boxes and Balls
- HDU 5810 Balls and Boxes
- 【HDU5810】Balls and Boxes(数学题)
- hdu 5810 Balls and Boxes
- MVP
- 敲代码时的一个小疑问
- matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明
- 11.5-关于用Python建网站
- Django中关于MVC和MVT
- Boxes And Balls CodeForces
- C++的命名空间 namespace
- PHP中防止SQL注入的方法
- golang中map和slice的查询速度比较,结果意想不到
- 小谈python 输出
- Android学习之SwipeRefreshLayout+RecyclerView+CardView
- java PushbackInputStream/Reader推回输入流
- Java 字符串(String类)
- 用C语言来实现_输入一个日期(年月日),计算是这一年中的第几天(集思广议)