没想到9月底了我还在做字节笔试……
T1 某家族子孙众多,每个人只保留了部分的家族族谱,现在想知道该家族的第一代人是谁和第N代人的数量
现在给出N组数据,每组数据分别代表某一个人保留的部分族谱信息,如:[A B C],表示当前C的父亲是B,B的父亲是A。
输入描述:
第1行输入为数值,代表有多少子族谱,数值范围在1-100
第2-n行输入为N组字符串数组,每组数组相当于一个家族关系的子链表,N<100
第n+1行输入表示要计算第n代人的数量,数值范围在1-100
输出描述:
第一行为字符串,家族第一代人的名称字符串
第二行为数值,第n代人的数量
input:
2
A B C
B C D
4
output:
A
1拓扑排序就可以了。构造完图,找到入度为0的就是第一代,题目数据保证了第一代只有一个。
from collections import defaultdict, deque
n = int(input())
ru = defaultdict(int)
g = defaultdict(list)
for _ in range(n):
line = input().split()
for pre, nxt in zip(line, line[1:]):
g[pre].append(nxt)
ru[nxt] += 1
q = deque()
for i in g:
if ru[i] == 0:
print(i)
q.append((i, 1))
break
t = int(input())
ans = 0
while q:
cnt, v = q.popleft()
if v == t: ans += 1
for nxt in g[cnt]:
ru[nxt] -= 1
if ru[nxt] == 0:
q.append((nxt, v + 1))
print(ans)T2 双休在家的凯凯真的是太无聊了,他准备和他家的猫玩一个游戏。
给定一个长度为n的数列a0,a1,a2,a3,.…an-1,以及一个数k
求a数列有多少个满足以下条件的长度为k+1的子串
(2^0)*a_{i} < (2^1)*a_{i+1} < (2^2)*a_{i+2} < ... < (2^k)*a_{i+k}
这下喵喵不会做了,你可以帮帮它么?
输入描述:
会有多组询问
首先输入一个数字t(1<=t<=5)
接下来首先有两个数n,k,具体含义如题意所示。(3<=n<=1e5,0 接下来有n个数表示数列a的n个数(0 输出描述: 对于每个询问,输出a数列满足条件的长度为k+1的子串的个数 input: 6 4 2 20 22 19 84 5 1 9 5 3 2 1 5 2 9 5 3 2 1 7 2 22 12 16 4 3 22 12 7 3 22 12 16 4 3 22 12 9 3 3 9 12 3 9 12 3 9 12 output: 2 3 2 3 1 0其实就是找一个长度为k+1的子数组,数组中每一项*2都大于它的前一项。