还是和上次一样的题型,但是选择题侧重于数据库,Linux操作系统等,没有什么概率论等数学知识了。只记了编程题

小红的9键输入

给了一个9键的数字和字母对应图,输入规则为,若按一下2,准备输出‘A’,再按一下2,则会准备输出‘B’。此时若按了其他键,那么会把当前准备的字符输出,并准备下一个字母。1没有任何字母,但会直接把当前准备的字母输出。(ps:比如2对应ABC,那么按4次2应该准备了A,即可以循环)

输入:一串按键串,只由1-9构成,保证能够至少输出一个字母

输出:仅大写字母的一串输出(ps:可能最后一个字母在准备中,没有输出)

思路:AC 100%

  1. 初始化一个哈希表,数字作为键,对应的字符串作为值;建立out和ready区,一个输出,一个准备缓冲区,以及一个计数器count=0;
  2. 读取按键串并在前面再加一个0,方便之后的操作,假设新的字符串长度为len;
  3. 遍历按键串,由于加了一个0,所以范围是range(1,len);判断是否是1,如果是,将out+=ready,ready=[];
  4. 若当前所指不是1,判断当前数字是否与前面的一个相同;若相同,count+=1;若不同,out+=ready,ready=[]。count=0
  5. 按照格式输出out即可

小红的四子棋

胜利规则和五子棋一样,只是改成了四子。n行m列的矩阵作为棋盘,r代表下小红,p代表小子,.代表还未落子。

输入:n,m (4<=n,m<=100)

n行m长度的由‘r’,‘p’,‘.’组成的字符串

(保证r和p的数量差不超过1,保证连珠不超过7个妻子,保证不会两种棋子都连珠,模拟正常下棋的情况)

输出:

若小红胜利,输出’Kou‘

若小紫胜利,输出’yukari‘

暂无人胜利,输出’to be continued‘

AC:33.33% 这道题实际上,只要无脑输出其中一个,就能拿到1/3的分数

思路:本来想的是用DFS像解决力扣上的岛屿面积问题一样判断的,但是发现貌似不行,但不知道怎么修改;后来想到它的形状应该是固定的,横、竖、两个 方向的斜,是否可以从这个角度遍历,请大佬指教

最小差

给定一棵n个点,以1为根的树,点的标号为[1,n],点i有权重ai,每个点的价值定义为其子树的权重和。求在所有无祖先后代关系的点对(x,y)种,x,y两点价值差值的最小值。若不存在这样子的点对输出1000000000

1<=n<=2000, 1<=ai<=100000, 1<=x,y<=n

输入:

第一行输入一个整数n

第二行输入n个整数,第i个表示ai

接下来n-1行,每行两个整数x,y,表示一条x指向y的边

输出:

一行一个整数表示答案

AC:10%,直接输出1000000000 可以蹭到

思路:按照输入可以获得一棵树,但是不理解题目中每个点的价值定义为其子树的权重和;按照例子所给,貌似只是判断ai中两个数的最小差值,只是这两个数对应的节点不能够祖先后代关系。 没怎么接触过树的题目,完全没有思路。