2 条题解

  • 0
    @ 2026-8-12 15:51:09
    #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
      @ 2026-8-12 10:54:02

          #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
      上传者