(贪心5.2.2)UVA 10954 Add All(利用数据的有序化来进行贪心选择)
2013-10-10 19:03
363 查看
本题实际上求的是n-1个数和的总和的
/* * UVA_10954.cpp * * Created on: 2013年10月10日 * Author: Administrator */ #include <iostream> #include <cstdio> using namespace std; const int maxn = 5010; int n; int a[maxn]; void sift(int i){ a[0] = a[i]; int k = i << 1; while(k <= n){ if(k < n && a[k] > a[k+1]){ k++; } if(a[0] > a[k]){ a[i] = a[k]; i = k; k = i << 1; }else{ k = n + 1; } } a[i] = a[0]; } void work(){ int i; for(i = n >> 1 ; i ; i--){ sift(i); } long long ans = 0; while(n!=1){ swap(a[1],a[n--]); sift(1); a[1] += a[n+1]; ans += a[1]; sift(1); } printf("%lld\n",ans); } int main(){ while(scanf("%d",&n)!=EOF,n){ int i; for(i = 1 ; i <= n ; ++i){ scanf("%d",&a[i]); } work(); } return 0; }
相关文章推荐
- (贪心5.2.9)UVA 10020 Minimal coverage(利用数据有序化来进行贪心选择)
- (贪心5.2.1)UVA 10026 Shoemaker's Problem(利用数据有序化来进行贪心选择)
- (贪心5.2.1)UVA 10026 Shoemaker's Problem(利用数据有序化来进行贪心选择)
- (Relax 1.6)POJ 1323 Game Prediction(利用有序化数据进行贪心选择: 有m个人,每个人有n张牌,别人想方设法的让你输,求你能赢多少次)
- (贪心5.2.5)POJ 1862 Stripies(利用数据有序化来进行贪心选择)
- (贪心5.2.6)URAL 1014 Product of Digits(利用数据有序化进行贪心选择)
- (贪心5.2.4)ZOJ 1360 Radar Installation(对有序化数据进行贪心选择)
- (贪心5.2.3)POJ 1065 Wooden Sticks(利用数据有序化来进行贪心选择)
- (Relax 1.6)POJ 1328 Radar Installation(利用数据有序化进行贪心选择)
- (贪心5.2.6)URAL 1014 Product of Digits(利用数据有序化进行贪心选择)
- 利用decode函数实现按不同的选择条件 对数据进行分组统计
- Jsp中利用JSTL的数据格式化对百分数,货币及数据格式等进行设置
- 利用python进行数据分析——之数据结构pandas(一)
- 利用python进行数据分析-数据规整化2
- iOS开发-进阶:利用通知(NSNotification)进行数据传递
- Android利用Fiddler进行网络数据抓包
- 利用EXCEL进行数据挖掘(一)
- 利用handler机制进行Server数据传输
- 利用Python对二进制数据进行按位处理
- Android利用Json来进行网络数据传输