代码没问题,但是超时了,请大佬指教!!!
问题描述//
这天, 小明在整理他的卡牌。
他一共有 nn 种卡牌, 第 ii 种卡牌上印有正整数数 i(i \in[1, n])i(i∈[1,n]), 且第 ii 种卡牌 现有 a_{i}ai 张。
而如果有 nn 张卡牌, 其中每种卡牌各一张, 那么这 nn 张卡牌可以被称为一 套牌。小明为了凑出尽可能多套牌, 拿出了 mm 张空白牌, 他可以在上面写上数 ii, 将其当做第 ii 种牌来凑出套牌。然而小明觉得手写的牌不太美观, 决定第 ii 种牌最多手写 b_{i}bi 张。
请问小明最多能凑出多少套牌?
输入格式
输入共 3 行, 第一行为两个正整数 n, mn,m 。
第二行为 nn 个正整数 a_{1}, a_{2}, \ldots, a_{n}a1,a2,…,an 。
第三行为 nn 个正整数 b_{1}, b_{2}, \ldots, b_{n}b1,b2,…,bn 。
输出格式
一行, 一个整数表示答案。
样例输入
4 5
1 2 3 4
5 5 5 5
样例输出
样例说明
这 5 张空白牌中, 拿 2 张写 1 , 拿 1 张写 2 , 这样每种牌的牌数就变为了 3,3,3,43,3,3,4, 可以凑出 3 套牌, 剩下 2 张空白牌不能再帮助小明凑出一套。
评测用例规模与约定
对于 30 \%30% 的数据, 保证 n \leq 2000n≤2000;
对于 100 \%100% 的数据, 保证 n \leq 2 \times 10^{5} ; a_{i}, b_{i} \leq 2 n ; m \leq n^{2}n≤2×105;ai,bi≤2n;m≤n2 。
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
完成学习
import java.math.BigInteger;
import java.util.Scanner;
public class c {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
long n=sc.nextLong();
long m=sc.nextLong();
long []a=new long[(int) n];
long []b=new long[(int) n];
long min=0;
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
min=a[0];
for(int i=0;i<n;i++) {
b[i]=sc.nextInt();
min=Math.min(min, a[i]);
}
boolean t=true;
while(t) {
for(int i=0;i<n;i++) {
if(min==a[i]) {
if(b[i]>0&&m>0) {
a[i]++;b[i]--;m--;min=a[i];break;}
else {System.out.println(min);t=false;}
}
}
for(int j=0;j<n;j++) {
min=Math.min(min, a[j]);
}
}
}
}