荣耀笔试(8.16)

news/2025/3/19 23:49:59/

第一题:给定2000年1月1日是星期六,输入是年份,月份,周数和一周的第几天,输出日期。

例:输入:

2022 08 3 2

输出:

2022-08-16

代码如下:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] s = sc.nextLine().split(" ");int year = Integer.parseInt(s[0]);int month = Integer.parseInt(s[1]);int week = Integer.parseInt(s[2]);int day = Integer.parseInt(s[3]);int tmp = 0;for(int i=2000;i<year;i++){if(isRun(i)){tmp += 366 % 7;}else{tmp += 365 % 7;}}int[] count = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if(isRun(year)){count[1] = 29;}for(int i=0;i<month-1;i++){tmp+= count[i];}tmp = tmp % 7;int res = 0;int[] xinqi = {6, 7, 1, 2, 3, 4, 5};tmp = xinqi[tmp];  //表示1号是星期几System.out.println("1号: " + tmp);int w = week;//System.out.println("....");if(w == 1){if(tmp > day){System.out.println(0);return;}else{res = day - tmp + 1;if(month < 10){System.out.println(year + "-0"+ month + "-0" + res);return;}else{System.out.println(year + "-"+ month + "-0" + res);return;}}}else{res += 7 - tmp + 1;w--;while(w != 1){res += 7;w--;}res += day;if(res > count[month]){System.out.println(0);return;}if(month < 10){if(res < 10){System.out.println(year + "-0"+ month + "-0" + res);return;}System.out.println(year + "-0"+ month + "-" + res);return;}else{if(res < 10){System.out.println(year + "-"+ month + "-0" + res);return;}System.out.println(year + "-"+ month + "-" + res);return;}//System.out.println(year + "-"+ month + "-" + res);}}public static boolean isRun(int year){if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){return true;}return false;}}

第二题与牛客上的一题很类似,做项目的最大收益问题

 代码如下

//贪心算法,按照成本先将所有项目升序排列,然后把能做的项目拿出来按照利润降序排列,// 选择利润最大的做,周而复始直到无项目可做。用一个大根堆和一个小根堆来完成排序操作。public static void main(String[] args) {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] params = br.readLine().split(" ");PriorityQueue<int[]> minHeap = new PriorityQueue<>((program1, program2)->program1[0] - program2[0]);PriorityQueue<int[]> maxHeap = new PriorityQueue<>((program1, program2)->program2[1] - program1[1]);int n = Integer.parseInt(params[0]), k = Integer.parseInt(params[2]);long w = Long.parseLong(params[1]);int[][] programs = new int[n][2];params = br.readLine().split(" ");for(int i=0;i<n;i++)   programs[i][0] = Integer.parseInt(params[i]);params = br.readLine().split(" ");for(int i=0;i<n;i++){programs[i][1] = Integer.parseInt(params[i]);minHeap.offer(programs[i]);}//只能做k个项目for(int i=0;i<k;i++){while(!minHeap.isEmpty() && w >= minHeap.peek()[0]){maxHeap.offer(minHeap.poll());}if(maxHeap.isEmpty())break;    //没有可做的项目了elsew += maxHeap.poll()[1];     //可以做的项目选利润最大的}System.out.println(w);}

 第三题:超级左旋

小立是一个乒乓球手,他的“超级左旋非常强大。
小立给自己制定了一份n天的训练计划来锻炼〝超级左旋”,并旦他每天会记录下失误的次数。
每天的训练结束后,小立都会进行反思自己是否退步。
之前每有一天的失误次数比今天的多,都会使他的能力值-1。
之前每有一天的失误次数比今天的少,都会使他的能力值+1。
之前每有-一天的失误次数与今天相同,不会影响他的能力值。
每天的能力值柠继承至下一天。初始能力值为0。
因为第—天没有之前的失误次数作为对照,所以第一天结束后,能力值不会改变。
求小立能力值最高时为多少,以及训练结束后小立的最終能力值为多少。

输入要求

输入一个数字T,表示有T组测试数据。
对于每组测试数据。第一行输入一个n,表示小立训练的天数。
第二行输入n个数字,ai(1<i<n)表示小立每天的失误次数。
(1 <= n, ai<=100000)

输出要求

对于每组测试数据,输出两个数字表示小立能力值最高为多少,以及训练结束后小立的最终能力值为多少

示例

输入

2
3
1 3 2
3
2 1 3

输出

1 1
1 1

代码如下:

public static void main(String[] args) {Scanner sc = new Scanner(System.in);int t = sc.nextInt();sc.nextLine();List<Integer[]> list = new ArrayList<>();int maxScore = 0;for(int i=0;i<t;i++){int days = sc.nextInt();sc.nextLine();String[] fault = sc.nextLine().split(" ");Integer[] faultNum = new Integer[fault.length];for(int j=0;j< fault.length;j++){faultNum[j] = Integer.parseInt(fault[j]);}list.add(faultNum);}for(int i=0;i<list.size();i++){Integer[] temp = list.get(i);int[] energy = new int[temp.length];for(int j=1;j<temp.length;j++){int high = 0;int low = 0;for(int k=1;k<=j;k++){if(temp[k-1] > temp[j]){low++;}else if(temp[k-1] < temp[j]){high++;}}energy[j] = energy[j-1] - low + high;if(energy[j] > maxScore){maxScore = energy[j];}}System.out.println(maxScore + " " + energy[energy.length - 1]);}}

不知道为啥我用暴力只过了20%,超时了


http://www.ppmy.cn/news/219417.html

相关文章

华为扩大内存代码_荣耀手机扩大内存代码_华为手机内存扩大拨号代码

服务器内存扩展板 500x375 - 36KB - JPEG 4GB手机运行内存 白色荣耀8福州现货 640x480 - 54KB - JPEG 买手机送内存卡 华为荣耀3X仅售1830元 500x375 - 26KB - JPEG 手机运行内存怎么扩大? 600x400 - 84KB - PNG 华为g9 plus能插扩展内存卡吗? 535x350 - 27KB - JPEG 拒绝扩展…

荣耀v8计算机如何使用方法,荣耀V8

【PConline 评测】5月10日&#xff0c;荣耀在北京凤凰国际传媒中心举行了新品发布会&#xff0c;发布了2016年的首款旗舰机型——荣耀V8。荣耀V8的推出&#xff0c;标志着荣耀V系列的开启。而这款机型最吸引人的&#xff0c;莫过于双摄像头设计以及可以拍摄3D动态全景照片。那么…

荣耀8开屏锁显示无法连接服务器,华为荣耀8解锁教程 华为荣耀8如何解锁

1. 为什么要解锁 解锁是为了能刷入第三方recovery,这样就能刷入第三方ROM包(一般为ZIP格式) 3. 解锁前的准备工作 1、申请解锁码需要在EMUI官网登陆华为账号,此账号必须在待解锁手机上登陆并使用超过14天,即两周,方可申请解锁码 2、一个华为账号一年只能申请两台机型的解锁…

纯css实现京东导航菜单

纯CSS代码实现导航菜单&#xff0c;推荐在chrome预览&#xff01; 预览请点击这里&#xff1a;mygithub 1 <!doctype html>2 <html lang"en">3 <head>4 <meta http-equiv"Content-Type" content"text/html; charsetutf-8"…

转战“小家电”后 ,苏泊尔掉队了吗?

文/琥珀消研社 作者/Kinki 3月底&#xff0c;苏泊尔发布了2020年财报之后&#xff0c;就迎来了两个新动作&#xff0c;一个是公司高管出现了变动&#xff0c;新任总经理由曾在飞鹤、雀巢等知名快消品牌工作的张国华担任&#xff0c;希望其丰富的经验能够帮助苏泊尔在营销、渠…

小程序商品瀑布流效果

由于wx.getImageInfo会校验域名&#xff0c;所以这里用来image里bindload事件来获取宽高。 <image wx:for"{{products}}" data-product"{{item}}" style"display:none;" wx:key"*this" bindload"imgLoad" mode"wid…

MySQL数据库基本操作-DQL-基本查询

###################MySQL数据库基本操作-DQL-基本查询####################### -- select -- [all][distinct] -- <目标列的表达式1> [别名]&#xff0c; -- <目标列的表达式2> [别名]&#xff0c; -- from <表名或视图名> [别名],<…