job

腾讯2025届算法笔试

coding to Tencent

Posted by Kylin on March 30, 2024

[TOC]

3.30 算法

OJ

Q1

国际象棋的棋盘上,行数是用数字1到8表示,列数是用字母a到h表示。

放置了一个皇后,返回攻击到的格子。

提示:皇后可以攻击到同一行、同一列以及同一对角线的所有棋子。

输入描述

一个字符串,代表皇后的位置。

输出描述

第一行输出一个整数,代表皇后可以攻击到的格子数量。

第二行输出2个长度为2的字符串,代表皇后能攻击到的格子。

能攻击到的格子有多个,按任意顺序输出均可。

A1

签到题。遍历8x8格子O(n^2),判断横纵坐标是否相同,或者横纵绝对值差是否为0,注意不要重合。

Q2

一个长度为偶数的数组,每次操作可以将一个数字乘2或将一个数字除以2向下取整。

至少需要操作几次才能把这个数组变成一半是奇数,一半是偶数。

输入描述

第一行输入一个整数n(10^5)表示数组长度,保证n是偶数。

第二行输入 n个整数表示数组。

输出描述

输出一个整数表示答案。

A2

奇乘2变偶,偶除2至少一次以上变奇。

如果奇数数量大于偶数数量,选(count(odd)-count(even))//2奇数变偶数。

如果偶数..大于奇数..,选变奇次数最少的偶数变奇。

遍历一次,统计奇偶,快查一次。O(n)

Q3

给定长度为n的数组a表示每道题的难度。共有 m个考生(10^5),给出每个考生通过题目序列(10^5)。

小红定义成绩异常为以下两种情况中至少出现了一种:

  1. 通过了一道难度为x的题,但没通过另一道难度小于等于x-500的题。
  2. 存在至少k对相邻的通过题目难度之差的绝对值大于等于500。

计算有多少考生的成绩异常。

Q3

依次统计即可。

Q4

有n个城市,n个城市(10^5)之间有m条(10^5)飞机和火车的双向线路,保证 n个城市是连通的。

出发点在1号城市,目的地在 n 号城市,她可以选择坐飞机和火车,但是在第 i 个城市转换交通工具需要花费a_i的时间。特别的,小红在1号城市和 n号城市都不需要转换交通工具。

从1号城市到 n号城市最少要花费多少时间。

A4

Dijkstra秒杀,维护一个最小堆,相当于条边是重复边,全部扔堆里面没有任何影响!

Q5

众所周知,所有的无限循环小数都可以写成分数的形式

判断循环节长度为k的无限循环小数的分母是否可能是p。

共有q次询问。每次给出k,p(10^9),判断YES or NO。

循环节定义:如果无限小数的小数点后,从某一位起向右进行到某一位置的一节数字循环出现,首尾衔接,称这种小数为循环小数,这一节数字称为循环节。

A5

分子直接为1,循环节不变,模拟除法。