基础算法之“蒜头君采摘苹果”
来源:互联网 发布:java视频教程谁的好 编辑:程序博客网 时间:2024/05/16 18:15
这是一道很简单的贪心,因为刚刚买这门课的时候水平很渣,只会暴力做法,就像下面的….
(注意这个没处理n=1的情况)
#include<iostream>using namespace std;#define INF 2147483648void insert_sort(long long a[],int n){ int i,j; long long t; for(i=1;i<n;++i) { t=a[i]; j=i-1; while(j>=0&&a[j]>t) { a[j+1]=a[j]; j--; } a[j+1]=t; } } int main(){ int n,i; long long sum=0; cin>>n; long long a[n],b[n]; for(i=0;i<n;++i) { cin>>a[i]; b[i]=0; } insert_sort(a,n); i=0; while(a[1]!=INF) { a[0]=a[0]+a[1]; b[i]=a[0]; i++; a[1]=INF; insert_sort(a,n); } for(i=0;i<n;++i) sum=sum+b[i]; cout<<sum;}
优先队列版本的:
#include<bits/stdc++.h>using namespace std;int main(){ int n,t,sum=0,tmp=0; priority_queue<int,vector<int>,greater<int> >q; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&t); q.push(t); } if(q.size()==1) printf("0"); else { int s=q.size(); for(int i=0;i<s-1;i++) { tmp=q.top(); q.pop(); tmp=tmp+q.top(); q.pop(); sum=sum+tmp; q.push(tmp); } printf("%d",sum); } return 0;}
阅读全文
1 0
- 基础算法之“蒜头君采摘苹果”
- 基础算法之“蒜头君买书”
- 【计蒜客】基础算法入门之深度搜索(2)蒜头学算术d
- 二叉搜索树之蒜头君的新技能
- 蒜头君的树
- 蒜头君吃桃子
- 蒜头君打老鼠
- 蒜头君的树
- 蒜头君的坐骑
- 蒜头君的兔子
- 蒜头君的排序
- 蒜头君救人
- 基础算法-放苹果
- 计蒜课 蒜头君走迷宫
- 计蒜客 蒜头君学英语
- 蒜头君的玩具娃娃
- 蒜头君救人 状压DP
- 蒜头学算术,计蒜客算法学习记录
- 现在学习Java大数据还不晚
- window.opener用法
- laravel Route、Controller、Model、Migration初步
- JSON与XML相比优缺点
- ajax对服务器大气请求和接收返回信息
- 基础算法之“蒜头君采摘苹果”
- 流行编程语言的详细对比(7)--对象继承
- 如何关闭虚拟机的防火墙
- Cannot create PoolableConnectionFactory (ORA-28040: No matching authentication protocol
- web安全
- 微博web网站的授权流程
- DataTable 只加载一次的问题
- 基础整理-分支语句
- 解决启动redis出现的creating server tcp listening socket *:6379: listen: unknown error