贪心&合并果子
2016-01-24 14:36
369 查看
题意不用多说了。
思路:哈夫曼编码的思路,保证每次合并的两队果子分别为所有堆得最小和次小。注意直接一次排序递加的思路是很危险的0.0.
下面上代码:
思路:哈夫曼编码的思路,保证每次合并的两队果子分别为所有堆得最小和次小。注意直接一次排序递加的思路是很危险的0.0.
下面上代码:
#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<set> #include<cmath> #include<ctype.h> using namespace std; typedef long long LL; //typedef pair<int ,int> P; //const int maxn=100000; int ans[1005]; LL sum=0; void solve(int x) { sum=0; while(x>1) { int minn1=0,minn2=1; if(ans[minn1]>ans[minn2]) swap(minn1,minn2); for(int i=2; i<x; i++) { if(ans[i]<ans[minn1]) { minn2=minn1; minn1=i; } else if(ans[i]<ans[minn2]) minn2=i; } sum+=ans[minn1]+ans[minn2]; if(minn1==x-1) swap(minn1,minn2); ans[minn1]=ans[minn1]+ans[minn2]; ans[minn2]=ans[x-1]; x--; } } int main() { int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d",&ans[i]); solve(n); printf("%lld\n",sum); } return 0; }
相关文章推荐
- QT结合opencv框架搭建
- 2015年第六届蓝桥杯C/C++程序设计本科B组省赛 移动距离(编程大题)
- 年终总结的写作方法及技巧
- VC6.0入门使用
- 科目二有惊无险
- hadoop - hadoop2.6 分布式 - 集群环境搭建 - 系统搭建和网络配置
- 黑马程序员-集合 (上)
- iOS开发之运行时编程(Runtime Programming)浅读
- 文章标题
- html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
- C/C++中多字符集转宽字符集
- show()与showDialog()的区别
- hdu 2159 FATE (完全背包)
- 299. Bulls and Cows
- opencv之haar特征+AdaBoos分类器算法流程(二)
- UIAlertController详解
- 5611 Baby Ming and phone number
- bc1002+字符串和数字的转换+日期的计算。以后日期直接用模板了
- QLable的“超链接”形式
- android mvp快速开发框架介绍(dileber的简介)