360笔试 2021/8/29
360笔试
第一部分
既有单选也有多选,而且编程题都是c++,而我选的岗位应该是Java吧。。很多c++语法看不懂额。
有图相关的知识
网络相关的挺简单的
操作系统linux命令等
第二部分
第一题
都为ACM模式
又到了一学期一次的大学生期末考试。但很多人期末考试的卷面成绩是不能及格的,需要靠较高的平时成绩来拖上去。平时成绩与期末考试的占比已经确定,假设平时成绩占比为p,期末考试占比为q,平时分为a,期末考试分数为b,则总成绩为(p*a+q*b)/100。(平时分与期末成绩都是整数,但总成绩可以是小数。)饶老师心肠特别好,他希望自己的学生及格率尽可能的高。但他也坚持期末考试分数更高的学生平时成绩也一定要更高。饶老师想知道在这种情况下,他们班的最大及格人数是多少(及格是指总成绩不低于60分)。
输入样例1
2 50 50
50 50
输出样例1
2
输入样例2
2 20 80
51 50
输出样例2
1
样例1中,两名同学,考试分数相同,平时分可以分配为100 100,两人都能及格。
样例2中,两名同学,第一位同学因为考试成绩高于第二位同学,故平时分也需要高于第二位同学;假设第一位同学平时分为100分,第二位同学最高只能得到99分的平时分,无论如何都无法及格。
过了100%,对输入的学生排序,从后往前遍历,如果学生及格,count++,如果学生不及格,结束遍历,输出count
import java.util.Arrays; import java.util.Scanner; /** * @author keboom * @date 2021/8/29 */ public class Solution1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int p = sc.nextInt(); int q = sc.nextInt(); int[] stu = new int[n]; for (int i = 0; i < n; i++) { stu[i] = sc.nextInt(); } Arrays.sort(stu); // 平时分为100 int a = 100; // 及格人数 int count = 0; for (int i = n - 1; i >= 0; i--) { // 判断最后一个数 if (i == n - 1) { // 期末分数b int b = stu[i]; int grade = (p * a + q * b) / 100; if (grade < 60) { System.out.println(count); break; } else { count++; } } else if (i < n - 1 && stu[i] == stu[i + 1]) { count++; } else { // 期末分数b int b = stu[i]; a--; int grade = (p * a + q * b) / 100; if (grade < 60) { System.out.println(count); break; } else { count++; } } if (i == 0) { System.out.println(count); } } } }
第二题
长城上有连成一排的n个烽火台,每个烽火台都有士兵驻守。第i个烽火台驻守着ai个士兵,相邻峰火台的距离为1。另外,有m位将军,每位将军可以驻守一个峰火台,每个烽火台可以有多个将军驻守,将军可以影响所有距离他驻守的峰火台小于等于x的烽火台。每个烽火台的基础战斗力为士兵数,另外,每个能影响此烽火台的将军都能使这个烽火台的战斗力提升k。长城的战斗力为所有烽火台的战斗力的最小值。请问长城的最大战斗力可以是多少?
输入描述
第一行四个正整数n,m,x,k(1<=x<=n<=10^5,0<=m<=10^5,1<=k<=10^5)第二行n个整数ai(0<=ai<=10^5)
输出描述
仅一行,一个整数,表示长城的最大战斗力样例输入
5 2 1 2
4 4 2 4 4
样例输出
6解释:将军放置到第二个位置和第四个位置,则所有战斗力都为6
不会,求解答!!!!给个思路,给个leetcode原题,都行,求大佬解答啊!!!!
#360笔试##360公司##笔经#