2 条题解

  • 0
    @ 2026-4-4 17:01:24

    import java.util.Scanner; public class Main { public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int m=sc.nextInt();
        long k=sc.nextLong();
        int[]a=new int[n+2];
        int[]b=new int[m+2];
        long[]sumA=new long[n+2];
        long[]sumB=new long[m+2];
        for(int i=1;i<=n;i++) {//前缀和
        	a[i]=sc.nextInt();
        	sumA[i]=a[i]+sumA[i-1];
        }
        for(int i=1;i<=m;i++) {
        	b[i]=sc.nextInt();
        	sumB[i]=b[i]+sumB[i-1];
        }
              
        
        int max=0;
        for(int i=0;i<=n;i++) {//遍历sumA
        	if(sumA[i]>k)break;
        	
        	int l=0,r=m,j=0;
        	while(l<=r) {//二分找出当前最大sumB
        		int mid=l+(r-l)/2;
        		if(sumA[i]+sumB[l]<=k) {
        			l=mid+1;
        			j=mid;
        		}else {
        			r=mid-1;
        		}
        	}
        	max=Math.max(max, i+j);
        }
        System.out.println(max);
    }   
    

    }

    信息

    ID
    385
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    421
    已通过
    86
    上传者