小米笔试2025/03/12

第一题
import java.util.*;

public class test {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int k=in.nextInt();
        int[] a=new int[100005];
        int ai;
        int st=100005,ed=0;
        for(int i=0;i<n;i++){
             ai=in.nextInt();
             a[ai]=1;
             if(i==0) st=ai;
             if(i==n-1) ed=ai;
        }
        int moreDay=k-n,ans=0,kDay=0;
        TreeMap<Integer,Integer> kDayMap=new TreeMap<>();
        for(int i=st-1;i<=ed+1;i++){
            if(a[i]==0&amp;&amp;a[i+1]==1) {
                ans++;
                if(i<=st) continue;
                kDay++;
                if(kDayMap.containsKey(kDay)){
                    kDayMap.put(kDay,kDayMap.get(kDay)+1);
                }else kDayMap.put(kDay,1);
//                System.out.println(&quot;day:&quot;+i+&quot;kDay:&quot;+kDay);
                kDay=0;
            }
            else if(a[i]==1&amp;&amp;a[i+1]==0) {
                ans++;
            }
            else if(a[i]==0) kDay++;
        }

        Set<Integer> kDaySet=kDayMap.keySet();
//        System.out.println(kDaySet+&quot;/&quot;+ans+&quot;/&quot;+moreDay);
        for(int key:kDaySet){
//            System.out.println(key);
//            System.out.println(kDayMap.get(key));
            int value=kDayMap.get(key);
            if(key*value<=moreDay){
                moreDay-=key*value;
                ans-=value*2;
            }else {
                ans-=(moreDay/key)*2;
                moreDay=0;
            }
            if(moreDay==0) break;
//            System.out.println(&quot;key:&quot;+key+&quot; value:&quot;+value+&quot; moreday:&quot;+moreDay+&quot; ans:&quot;+ans);
        }

        System.out.println(ans);
//        System.out.println(moreDay);
//        System.out.println(kDayMap);
        in.close();
    }
}
第二题来不及做
打表#牛客创作赏金赛#
全部评论
点赞 回复 分享
发布于 03-15 12:04 广西

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务