2 条题解
-
0
#include<stdio.h> #include<queue> #include<algorithm> using namespace std; #define mp make_pair typedef long long ll; const int N=1e5+5; int n,m,l; ll w[N],d[N],ed[N*10],ans; priority_queue<pair<ll,int> >q,p; int main(){ scanf("%d%d%d",&l,&n,&m); for(int i=1;i<=n;++i){ scanf("%lld",&w[i]); q.push(mp(-w[i],i)); } for(int i=1;i<=m;++i){ scanf("%lld",&d[i]); p.push(mp(-d[i],i)); } for(int i=1;i<=l;++i){ ll u=-q.top().first;int v=q.top().second; ed[i]=u; q.pop(); q.push(mp(-u-w[v],v)); } for(int i=l;i;--i){ ll u=-p.top().first;int v=p.top().second; ans=max(ans,ed[i]+u); p.pop(); p.push(mp(-u-d[v],v)); } printf("%lld\n",ans); return 0; } -
0

#include<bits/stdc++.h> using namespace std; #define int long long inline int read(){ char ch=getchar(); int res=0; while(!isdigit(ch))ch=getchar(); while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48),ch=getchar(); return res; } priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >qa; priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >qb; int n,m,l,w[100005],d[100005]; int ans1[1000005],ans2[1000005],tot; inline bool comp(int x,int y){ return x>y; } signed main(){ l=read();n=read(),m=read(); for(int i=1;i<=n;i++){ w[i]=read(); qa.push(make_pair(w[i],i)); } for(int i=1;i<=m;i++){ d[i]=read(); qb.push(make_pair(d[i],i)); } for(int i=1;i<=l;i++){ pair<int,int> c=qa.top();qa.pop(); ans1[i]=c.first; c.first+=w[c.second]; qa.push(c); } for(int i=1;i<=l;i++){ pair<int,int> c=qb.top();qb.pop(); ans2[i]=c.first; c.first+=d[c.second]; qb.push(c); } sort(ans1+1,ans1+l+1); sort(ans2+1,ans2+1+l,comp); for(int i=1;i<=l;i++){ tot=max(tot,ans1[i]+ans2[i]); } cout<<tot; return 0; }
- 1
信息
- ID
- 10093
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 9
- 标签
- 递交数
- 32
- 已通过
- 4
- 上传者