卡牌(java)

代码没问题,但是超时了,请大佬指教!!!

问题描述//

这天, 小明在整理他的卡牌。

他一共有 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]);

        }

        }

    }

}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值