字节跳动秋招笔试编程题(一)

1、Bytedance Efficiency Engineering团队在8月20日搬入了学清嘉创大厦。为庆祝团队的乔迁之喜,字节君决定邀请整个EE团队,举办一个大型团建游戏-字节跳动大闯关。可是遇到了一个问题:EE团队共有n个人,大家都比较害羞,不善于与陌生人交流。这n个人每个人都向字节君提供了自己认识的人的名字,不包括自己。如果A的名单里有B,或B的名单里有A,则代表A与B互相认识。同时如果A认识B,B认识C,则代表A与C也会很快地认识,毕竟通过B的介绍,两个人就可以很快互相认识了。为了大闯关游戏可以更好地团队协作,气氛更活跃,并使得团队中的人可以尽快相互了解、认识和交流,字节君决定根据这个名单将团队分为m组,每组人数可以不同,但组内的任何一个人都和组内其他所有人直接或间接地认识和交流。如何确定一个方案,使得团队可以分成m租,并且这个m尽可能地小呢?

输入描述:第一行一个整数n,代表有n个人,从1开始编号。接下来有n行,第x+1行代表编号为x的人认识的人的编号k(1<=k<=n),每个人的名单以0代表结束。

输出描述:一个整数m,代表可以分的最小的组的个数。

示例

输入

10

0

5  3  0

8  4  0

9  0

9  0

3  0

0

7  9  0

0

9  7  0

输出

2

说明:1号同学孤独地自己一个组,因为他谁也不认识,也没有人认识他。其他所有人均可以直接或间接认识,分在同一个组。

备注:对于50%的数据,n<=1000;对于100%的数据,1<=n<=100000,名单总长度不超过100000.

2、我们定义合法的标识符为:数字0-9组成的字符串。(可以包含多个前导0)定义合法的表达式为:(1)若x为合法的标识符,则x为合法的表达式(2)若x为合法的表达式,则(x)为合法的表达式(3)若x和y均为合法的表达式,则x+y,x-y均为合法的表达式。如,以下均为合法的表达式:1,100,1+2,(10),1-(3-2);以下为不合法的表达式:(,-1,1+-2。给定长度n,求长为n的合法表达式的数目。长为n的合法表达式可能有非常多,你只需要输出结果对1000000007取模的余数即可。

输入描述:一个整数n

输出描述:长为n的合法表达式的数目对1000000007取模的余数。

示例

输入

1

输出

10

备注:对于40%的数据,n<=10;对于100%的数据,0<=n<=1000.

3、双生词是指定满足如下条件的两个字符串:(假设两个字符串分别为S和S')(1)字符串S和S'长度相同(2)将字符串S首尾相接绕成环,再选一个位置切开,顺时针或逆时针能够得到字符串S'。容易得到,若S与S'为双生词,则S'与S也为双生词。更定一批仅由英文小写字母组成的字符串,询问它们之中是否存在双生词。

输入描述:首先给出测试组数t,表示一共有多少组数据。对于每组数据,第一行为一个整数n,表示一共有多少个字符串;接下来n行,每行一个字符串。

输出描述:对于每组数据,若存在双生词,输出Yeah;若不存在双生词,输出Sad。

示例

输入

3

2

helloworld

hdlrowolle

2

helloworld

worldhello

2

abcde

acbde

输出

Yeah

Yeah

Sad

备注:对于40%的数据:n<100;对于100%的数据1<=t<=10,n<100000,字符串长度在1-32之间。

4、一天,小凯同学震惊地发现,自己屋内的PM2.5指标是有规律的!小凯采样了PM2.5数值,发现PM2.5数值以小时为周期循环,即任意时刻的PM2.5总是和一小时前相等!他的室友小文提出了这样一个问题,在t小时内的所有采样点中,选取若干采样点的数值,能否找到一个PM2.5不曾下降过的序列?这个序列最长是多少?

输入描述:第一行有两个整数n和t,表示每小时的采样点个数和询问多少个小时的结果。第二行有n个整数,以空格分隔,表示一个小时内,每个采样点观测到的PM2.5数值。

输出描述:一个整数,表示t小时内,最长的PM2.5不曾下降过的序列的长度。

示例

输入

4  3

10  3  7  5

输出

4

说明

3小时内的所有采样点为10  3  7  5  10  3  7  5  10  3  7  5,选取第2,3,5,9个采样点,可以得到一个不曾下降过的序列3  7  10  10,使用其它方法也可以得到长为4的满足条件的序列,但是无法得到长度超过4的结果。

备注:对于20%的数据,t=1,对于50%的数据,t<=1000,对于80的数据,PM2.5数值不超过200,对于100%的数据,1<=n<=1000,1<=t<=1000000,PM2.5数值为正整数,不超过1000000000.

5、已知一些形如"y=4-x"的约束关系,查询形如“y-x”的值。

输入描述:第一行有两个整数n,m,表示有n个已知的约束条件,有m个查询。接下来n行,形如"y = k - x",表示约束条件y=k-x.其中等号和减号前后一定有空格。y与x是变量名,由英文小写字母组成,长度不超过4.k是一个偶数(注意可能为负,负数的负号后没有空格)。接下来m行,形如"y - x",表示查询y-x的值。其中减号前后一定有空格。y与x是变量名,规则同上。输入数据保证不会产生冲突,不会无解。

输出描述:对于每个查询,输出一个整数,表示y-x的值。若输入数据不足以推导出结果,则输出"cannot_answer"。

示例

输入

3 2

a = 0 - b

b = 2 - c

c = 4 - d

b - d

b - c

输出

-2

cannot_answer

备注:对于30%的数据,0<=n<=1000,0<=m<=1000,变量名长度不超过2,对于所有的查询“y-x”,一定能通过某条路径找到y与x的关系,如y=ka-a,a=kb-b,b=kc-c,c=kd-x,对于100%的数据,0<=n<=100000,0<=m<=100000,-200000<=k<=200000,变量名由小写英文字母组成,且长度不超过4.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值