小米笔试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&&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("day:"+i+"kDay:"+kDay);
kDay=0;
}
else if(a[i]==1&&a[i+1]==0) {
ans++;
}
else if(a[i]==0) kDay++;
}
Set<Integer> kDaySet=kDayMap.keySet();
// System.out.println(kDaySet+"/"+ans+"/"+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("key:"+key+" value:"+value+" moreday:"+moreDay+" ans:"+ans);
}
System.out.println(ans);
// System.out.println(moreDay);
// System.out.println(kDayMap);
in.close();
}
}
第二题来不及做
打表#牛客创作赏金赛#
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&&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("day:"+i+"kDay:"+kDay);
kDay=0;
}
else if(a[i]==1&&a[i+1]==0) {
ans++;
}
else if(a[i]==0) kDay++;
}
Set<Integer> kDaySet=kDayMap.keySet();
// System.out.println(kDaySet+"/"+ans+"/"+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("key:"+key+" value:"+value+" moreday:"+moreDay+" ans:"+ans);
}
System.out.println(ans);
// System.out.println(moreDay);
// System.out.println(kDayMap);
in.close();
}
}
第二题来不及做
打表#牛客创作赏金赛#
全部评论
强
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享