Luogu1090合并果子[单调队列]
2017-02-25 14:39
330 查看
/* ID:hh826532 PROB: LANG:C++ */ #define _FILE_ "" #include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> #include<vector> #include<map> #include<queue> #include<time.h> #include<fstream> #include<string> #include<set> #include<list> #include<stdlib.h> #define fr(i,a,b) for(int i=a,_end_=b;i<=_end_;i++) #define fd(i,a,b) for(int i=a,_end_=b;i>=_end_;i--) #define frei(s) freopen(s,"r",stdin) #define freo(s) freopen(s,"w",stdout) #define ll long long #define u unsigned using namespace std; #define rt return #define inf 0x3f3f3f3f #define infll 4557430888798830399ll #define pc(x) putchar(x) #define spc putchar(' ') #define gc getchar() #define ln pc('\n') #define writeint(x) printf("%d",x) #define lowbit(x) (x&(-x)) int readuint(){ int s=0; char c=getchar(); while(c<'0'||c>'9')c=gc; while(c>=48&&c<='9'){ s=s*10+c-48; c=gc; } rt s; } int readint(){ int s=0,k=1; char c=getchar(); while((c<'0'||c>'9')&&c!='-')c=gc; if(c=='-'){ k=-1; c=gc; } while(c>=48&&c<='9'){ s=s*10+c-48; c=gc; } rt s*k; } void OPENFILE(){ char FILENAME[50]; if(strlen(_FILE_)==0)rt; sprintf(FILENAME,"%s.in",_FILE_); frei(FILENAME); sprintf(FILENAME,"%s.out",_FILE_); freo(FILENAME); } int alen,al,bl,blen,a[100010],b[100010],ans; int main(){ OPENFILE(); alen=readuint(); if(alen<2) { printf("0\n"); rt 0; } fr(i,1,alen) a[i]=readuint(); sort(a+1,a+alen+1); blen=1; al=3; bl=1; a[alen+1]=inf; ans=b[1]=a[1]+a[2]; b[2]=inf; fr(i,1,alen-2) { blen++; b[blen]=0; fr(j,1,2) if(a[al]>b[bl]&&bl!=blen) { b[blen]+=b[bl]; bl++; } else { b[blen]+=a[al]; al++; } ans+=b[blen]; b[blen+1]=inf; } printf("%d\n",ans); rt 0; }
大家可以去codevs做一下
本人题目
相关文章推荐
- 合并果子-----单调队列
- 合并果子【单调队列】
- 合并果子 单调队列的模板题
- 单调队列及其deque写法 HDU 3415+Poj 4002 (日期处理) + 合并果子
- 【双队列】【NOIP2004提高组】二、合并果子
- 合并果子优先队列做法
- C++优先队列 合并果子
- 优先队列 合并果子通俗易懂
- 07年 ZZUPC校赛第三题 合并果子(优先队列 ~)
- [Swust OJ 352]--合并果子(贪心+队列模拟)
- C++优先队列 合并果子
- luogu1090(堆,排序,贪心)合并果子
- 【双队列】【NOIP2004提高组】二、合并果子
- 合并果子,优先队列的使用
- 1063 合并果子 优先队列
- TYVJ 1066 合并果子【优先队列】
- 合并果子(队列)(数学技巧)
- Vijos P1097 合并果子【哈夫曼树+优先队列】
- 【vijos】【优先队列】合并果子
- 1270 药不能停(合并果子,优先队列,堆)