牛客笔试强训

2024-08-27 06:12
文章标签 笔试 牛客 强训

本文主要是介绍牛客笔试强训,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

牛客AB33.相差不超过k的最多数 (滑动窗口)

 和之前那个空调吹风属于一道题的类型,当然滑动窗口,最大值-最小值,然后<=p即可

也可以双指针来取寻找最大值和最小值

import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int k = in.nextInt();int[]a=new int[n];for(int i=0;i<n;i++){a[i]=in.nextInt();}Arrays.sort(a);int left=0;int right=0;int count=0;while(right<n){while(a[right]-a[left]>k){left++;}if(a[right]-a[left]<=k){count=Math.max(count,right-left+1);}right++;}System.out.print(count);}
}

二分,注意的是要确认,二分对应的界限,左端点是left+(right-left)/2,右端点是left+(right-left+1)/2。为什么是这两个情况,因为小于等于,和大于等于啥的要求不一样,如果左端点不+1,这样她就是两个相同的里面左边的那个,反之就是右边的那个 

import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别int n = in.nextInt();int count = 1;int k = in.nextInt();int[]a = new int[n];for (int i = 0; i < n; i++) {a[i] = in.nextInt();}Arrays.sort(a);for (int i = 0; i < n; i++) {int x = Math.max(a[i] - k, 1);int left = 0;int right = n - 1;while (left < right) {int mid = left + (right - left) / 2;if (a[mid] >= x) {right = mid;} else {left = mid + 1;}}int l = left;left = 0;right = n - 1;x = Math.max(a[l] + k, 1);while (left < right) {int mid = left + (right - left + 1) / 2;if (a[mid] > x) {right = mid - 1;} else {left = mid;}}count = Math.max(count, right - l + 1);}System.out.print(count);}
}

 牛客.DP最长公共子序列

动态规划,只要前面出来了,代码好写

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别        int n= in.nextInt();int m= in.nextInt();String aa=in.next();char[]a=aa.toCharArray();String bb=in.next();char[]b=bb.toCharArray();//s1中[0,i]区间以及s2中[0,j]区间中,所有子序列里面,最长的公共子序列长度int max=0;int[][]dp=new int[n+1][m+1];for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i-1]==b[j-1]){dp[i][j]=dp[i-1][j-1]+1;}else{dp[i][j]=Math.max(dp[i][j-1],dp[i-1][j]);}max=Math.max(dp[i][j],max);}}
System.out.println(max);}
}

牛客.春游

模拟,贪心,有点微微像蓝桥杯的食堂,但是情况比食堂会简单一点

import java.util.*;
public class Main{public static void main(String[]args){Scanner in=new Scanner(System.in);int T=in.nextInt();for(int i=0;i<T;i++){long n=in.nextLong();long a=in.nextLong();long b=in.nextLong();long ret=0;if(n<=2){ret=Math.min(a,b);}else{if(3*a<2*b){ret=n/2*a;if(n%2==1){  if(2*a<b){ret+=a;}else{ret+=b-a;}}}else {ret=n/3*b;if(n%3==2){ret+=Math.min(a,Math.min(b,3*a-b));}else if(n%3==1){ret+=Math.min(a,Math.min(b,2*a-b));}}   }System.out.println(ret);}}
}

牛客.活动安排(贪心)

我们应该选择右端点较小的作为基准,当我面临这种重叠的时候,.

import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n=in.nextInt();int[][]arr=new int[n][2];for(int i=0;i<n;i++){arr[i][0]=in.nextInt();arr[i][1]=in.nextInt();}Arrays.sort(arr,(x,y)->{return x[0]<=y[0] ?-1:1;});int ret=0;int r=arr[0][1];for(int i=1;i<n;i++){if(arr[i][0]<r){r=Math.min(arr[i][1],r);}else{ret++;r=arr[i][1];}}System.out.println(ret+1);}
}

这篇关于牛客笔试强训的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110854

相关文章

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>

两道笔试题

“char a='\72'”是什么意思? 这么理解:\为转义字符,\072转义为一个八进制数072,也就是十进制数的58买一送一,将转义字符对照表也一并贴给你吧:转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT

华为23年笔试题

消息传输 题目描述 在给定的 m x n (1 <= m, n <= 1000) 网格地图 grid 中,分布着一些信号塔,用于区域间通信。 每个单元格可以有以下三种状态:  值 0 代表空地,无法传递信号;  值 1 代表信号塔 A,在收到消息后,信号塔 A 可以在 1ms 后将信号发送给上下左右四个方向的信号塔; 值 2 代表信号塔 B,在收到消息后,信号塔 B 可以在 2ms

实现的动态规划问题华为笔试题C++实现

秋招刷力扣题,我觉得我对动态规划不是熟练,在此处做总结 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。我觉得最大的问题就是对问题的分解,分解后的问题与分解前的问题具有相同的决策机制,将决策机制进行抽象,最终可以得到对应的解; 动态规划中开始介绍的爬楼梯等问题,答

某公司笔试编程题

参加了某公司编程题,这些题都来自牛客网,记录总结吧! 一、蛇形矩阵 题目描述 蛇形矩阵是有1开始的自然数依次排列成的一个上三角矩阵. 接口说明 void GetResult(int Num, int* pResult);输入参数:int Num :输入的正整数N输出参数:int *pResult: 指向放蛇形矩阵的字符串指针指针指向的内存区域保证有效 样例输入: 4

牛客小白月赛100(A,B,C,D,E,F三元环计数)

比赛链接 官方讲解 这场比较简单,ABC都很签到,D是个不太裸需要预处理的 B F S BFS BFS 搜索,E是调和级数暴力枚举,F是三元环计数。三元环考的比较少,没见过可能会偏难。 A ACM中的A题 思路: 就是枚举每个边变成原来的两倍,然后看看两短边之和是否大于第三边即可。 不能只给最短边乘 2 2 2,比如 1 4 8 这组数据,也不能只给第二短边乘 2 2 2,比

CVTE java web后台实习生笔试+技术一面总结

投的第一份简历,也可以说是第一次写笔试和参加面试。题在前面,总结在最后,努力不骗人。 笔试 题型:20道不定项选择题+2道算法题+1道架构设计题 选择题 选择题出的很全面,因为是不定项选择,一道题就可以考很多知识点。 当时做的时候以为笔试都是这么难,做完实验室同学告诉我这个算比较难的了,而且据我观察可能是跟春招找正式offer的一批难度的题。可能最后过的标准不一样吧。 选项信息量很大,

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述