3 条题解

  • 0
    @ 2024-10-20 21:57:07

    `#include<bits/stdc++.h> using namespace std; const int N=1e5+5; struct Node{ int val,i,j; friend bool operator < ( Node a,Node b ){ return a.val>b.val; } };

    priority_queue pq; int n,a[N],b[N]; map< pair<int,int>,bool >mp; int main(){ cin>>n; // for(int i=1;i<=n;i++){ // cin>>a[i].val>>a[i].i>>a[i].j; // } // sort(a+1,a+1+n); // for(int i=1;i<=n;i++){ // cout<<a[i].val<<" "<<a[i].i<<" "<<a[i].j<<"\n"; // } for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=1;i<=n;i++){ scanf("%d",&b[i]); } Node now; now.val=a[1]+b[1]; now.i=1;now.j=1; pq.push(now); for(int i=1;i<=n;i++){ now=pq.top(); pq.pop(); printf("%d ",now.val);

      if( now.j!=n && mp[ make_pair(now.i,now.j+1) ]==0 ){
        mp[ make_pair(now.i,now.j+1)]=1;
        Node tmp=now;
        tmp.j++;
        tmp.val=a[tmp.i]+b[tmp.j];
        pq.push(tmp);
      }
      
      if( now.i!=n && mp[ make_pair(now.i+1,now.j) ]==0 ){
        mp[make_pair(now.i+1,now.j)]=1;
        Node tmp=now;
        tmp.i++;
        tmp.val=a[tmp.i]+b[tmp.j];
        pq.push(tmp);
      }
    }
    return 0;
    

    }`

    • 0
      @ 2024-10-20 21:56:47

      ''' #include<bits/stdc++.h> using namespace std; const int N=1e5+5; struct Node{ int val,i,j; friend bool operator < ( Node a,Node b ){ return a.val>b.val; } };

      priority_queue pq; int n,a[N],b[N]; map< pair<int,int>,bool >mp; int main(){ cin>>n; // for(int i=1;i<=n;i++){ // cin>>a[i].val>>a[i].i>>a[i].j; // } // sort(a+1,a+1+n); // for(int i=1;i<=n;i++){ // cout<<a[i].val<<" "<<a[i].i<<" "<<a[i].j<<"\n"; // } for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=1;i<=n;i++){ scanf("%d",&b[i]); } Node now; now.val=a[1]+b[1]; now.i=1;now.j=1; pq.push(now); for(int i=1;i<=n;i++){ now=pq.top(); pq.pop(); printf("%d ",now.val);

        if( now.j!=n && mp[ make_pair(now.i,now.j+1) ]==0 ){
          mp[ make_pair(now.i,now.j+1)]=1;
          Node tmp=now;
          tmp.j++;
          tmp.val=a[tmp.i]+b[tmp.j];
          pq.push(tmp);
        }
        
        if( now.i!=n && mp[ make_pair(now.i+1,now.j) ]==0 ){
          mp[make_pair(now.i+1,now.j)]=1;
          Node tmp=now;
          tmp.i++;
          tmp.val=a[tmp.i]+b[tmp.j];
          pq.push(tmp);
        }
      }
      return 0;
      

      } '''

      • 0
        @ 2024-10-20 21:56:30

        #include<bits/stdc++.h> using namespace std; const int N=1e5+5; struct Node{ int val,i,j; friend bool operator < ( Node a,Node b ){ return a.val>b.val; } };

        priority_queue pq; int n,a[N],b[N]; map< pair<int,int>,bool >mp; int main(){ cin>>n; // for(int i=1;i<=n;i++){ // cin>>a[i].val>>a[i].i>>a[i].j; // } // sort(a+1,a+1+n); // for(int i=1;i<=n;i++){ // cout<<a[i].val<<" "<<a[i].i<<" "<<a[i].j<<"\n"; // } for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=1;i<=n;i++){ scanf("%d",&b[i]); } Node now; now.val=a[1]+b[1]; now.i=1;now.j=1; pq.push(now); for(int i=1;i<=n;i++){ now=pq.top(); pq.pop(); printf("%d ",now.val);

          if( now.j!=n && mp[ make_pair(now.i,now.j+1) ]==0 ){
            mp[ make_pair(now.i,now.j+1)]=1;
            Node tmp=now;
            tmp.j++;
            tmp.val=a[tmp.i]+b[tmp.j];
            pq.push(tmp);
          }
          
          if( now.i!=n && mp[ make_pair(now.i+1,now.j) ]==0 ){
            mp[make_pair(now.i+1,now.j)]=1;
            Node tmp=now;
            tmp.i++;
            tmp.val=a[tmp.i]+b[tmp.j];
            pq.push(tmp);
          }
        }
        return 0;
        

        }

        • 1

        信息

        ID
        308
        时间
        1000ms
        内存
        256MiB
        难度
        9
        标签
        递交数
        178
        已通过
        10
        上传者