信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。
信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。
第一行先输入一个整数
代表数据集
中的数据条数。随后,在同一行输出
个整数
代表数据。
第二行先输入一个整数
代表分类规则集
中的规则条数。随后,在同一行输出
个整数
代表规则。
在一行上:
先输出一个整数
,代表一共需要输出的数字个数。简单地说,这个数字为下文中你输出数量的个数统计。
随后,对于规范后的每一条规则,如果其有效:先输出这条规则本身,随后输出一个整数
,代表符合该规则的数据条数;随后输出
个二元组
,代表符合这条规则的数据在
中的位置、数据本身。其中,位置从
开始计数。如果其无效,则跳过这条规则。
15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123 5 6 3 6 3 0
30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786
在这组样例中,给定的原始数据集为
,给定的原始规则集为
。
规范化后的规则集为
。
随后,对
进行分类处理:
对于规则
,由于
中不存在以
为连续子串的数据,因此该规则无效,跳过;
对于规则
,
中以
为连续子串的数据有:
、
、
、
、
、
,因此该规则有效。根据输出描述,先输出规则本身
、随后输出符合要求的条数
、随后输出符合要求的数据在
中的位置和整数本身
;
对于规则
,
中以
为连续子串的数据有:
、
、
、
、
、
、
,因此该规则有效。根据输出描述,先输出规则本身
、随后输出符合要求的条数
、随后输出符合要求的数据在
中的位置和整数本身。
不要忘了在输出开始的整数
,在这个样例中,一共输出了
个数字,所以
。
本题由牛客重构过题面,您可能想要阅读原始题面,我们一并附于此处。
【以下为原始题面】
从R依次中取出R<i>,对I进行处理,找到满足条件的I:
I整数对应的数字需要连续包含R<i>对应的数字。比如R<i>为23,I为231,那么I包含了R<i>,条件满足 。
按R<i>从小到大的顺序:
(1)先输出R<i>;
(2)再输出满足条件的I的个数;
(3)然后输出满足条件的I在I序列中的位置索引(从0开始);
(4)最后再输出I。
附加条件:
(1)R<i>需要从小到大排序。相同的R<i>只需要输出索引小的以及满足条件的I,索引大的需要过滤掉
(2)如果没有满足条件的I,对应的R<i>不用输出
(3)最后需要在输出序列的第一个整数位置记录后续整数序列的个数(不包含“个数”本身)
序列I:15,123,456,786,453,46,7,5,3,665,453456,745,456,786,453,123(第一个15表明后续有15个整数)
序列R:5,6,3,6,3,0(第一个5表明后续有5个整数)
输出:30, 3,6,0,123,3,453,7,3,9,453456,13,453,14,123,6,7,1,456,2,786,4,46,8,665,9,453456,11,456,12,786
说明:
30----后续有30个整数
3----从小到大排序,第一个R<i>为0,但没有满足条件的I,不输出0,而下一个R<i>是3
6--- 存在6个包含3的I
0--- 123所在的原序号为0
123--- 123包含3,满足条件
i = input().strip() r = input().strip() i_list = i.split()[1:] # 数据集I r_list = sorted(set(r.split()[1:]), key=int) # 规范化分类规则集R result = [] # 最终结果 for rule in r_list: temp = [] for index, num in enumerate(i_list): if rule in num: temp.append((index, num)) if temp: result.append((rule, len(temp), temp)) if result: n_rules = len(result) counts_sum = sum(item[1] for item in result) # 所有有效规则的匹配总数 s = 2 * (n_rules + counts_sum) print(s, end=' ') for res in result: print(res[0], res[1], end=' ') for t in res[2]: print(t[0], t[1], end=' ')
I = input().strip().split()[1:]
R = list(set(map(int,input().strip().split()[1:])))
R.sort()
results = []
for _ in R:
lst_i = []
for index,Ii in enumerate(I):
if str(_) in Ii:
lst_i.append(str(index))
lst_i.append(Ii)
if len(lst_i)>0:
results.append(str(_))
results.append(str(len(lst_i)//2))
results += lst_i
print(len(results), end=' ')
print(' '.join(results)) a = input().split()[1:]
s = ' '.join(a)
#要按照从小到大排列
b = list(map(int, input().split()))[1:]
b = sorted(set(b))
inclu = [str(i) for i in b if str(i) in s]
dic ={}
res_lst = []
for i in inclu:
dic[i]=0
sub_lst = []
for j in range(len(a)):
if i in a[j]:
sub_lst.append(str(j))
sub_lst.append(a[j])
dic[i] += 1
res_lst.append(sub_lst)
fnl =''
for i in range(len(res_lst)):
key = inclu[i]
fnl += key+' '+str(dic[key])+' '
fnl += ' '.join(res_lst[i])+' '
result = (str(len(fnl.split())) +' '+ fnl).split()
print(' '.join(result)) a=input().split() b=input().split() N=a[0] c=[] for i in set(b[1:]): c.append(int(i)) M=len(c) c=sorted(c) path=[] for i in range(M): stuck=[] for j in range(1,int(N)+1): if str(c[i]) in a[j]: stuck.extend([j-1,int(a[j])]) if len(stuck)>0: path.append(c[i]) path.append(int(len(stuck)/2)) path.extend(stuck) if len(path)>0: ans=[len(path)] ans.extend(path) for i in ans: print(i,end=' ')
I = input()
I = I[I.index(" ") + 1:]
Is = I.split(" ")
R = input()
Rs = R[R.index(" ") + 1:].split(" ")
Rdict= dict()
Is_len = len(Is)
nums = list()
# store number order in nums
for key in Rs:
if not Rdict.get(key):
Rdict[key] = []
nums.append(int(key))
# loop through Is to check if value pairs
for i in range(Is_len):
if key in Is[i]:
Rdict[key].append(str(i))
Rdict[key].append(Is[i])
nums.sort()
count = 0
res = ""
for num in nums:
num_len = len(Rdict[str(num)])
if num_len == 0:
continue
else:
# current count means the count of value pairs
cur_count = int(num_len / 2)
res += str(num) + " " + str(cur_count) + " " + " ".join(Rdict[str(num)]) + " "
count += 2 + num_len
res = str(count) + " " + res
print(res) i = input().split(' ')[1:]
r = sorted(list(set(input().split(' ')[1:])),key=lambda x:int(x))
d = {x:['',0] for x in r}
for index in range(len(i)):
for value in r:
if value in i[index]:
d[value][1] += 1
d[value][0] += ' ' + str(index) + ' ' + i[index]
fin_str = ''
count = 0
for index in r:
if d[index][1] != 0:
count += (d[index][1]+1) * 2
fin_str += ' ' + index + ' ' + str(d[index][1]) + d[index][0]
print(str(count)+fin_str)
# 感觉我的方法简单点
R = input().split(' ')[1:]
I = list(map(int,input().split(' ')))[1:]
I = list(set(I))
I.sort()
data = []
for i in I:
l = []
for j in range(len(R)):
if str(i) in R[j]:
l.extend([str(j),R[j]])
if len(l)>0:
data.extend([str(i),str(int(len(l)/2))])
data.extend(l)
data.insert(0,str(len(data)))
print(' '.join(data)) arr_i = input().split()[1:]
arr_r = map(int,input().split()[1:])
arr_r = sorted(list(set(arr_r)))
arr_r = list(map(str,arr_r))
res = []
for i in arr_r:
tmp = [i]
for j, ele in enumerate(arr_i):
if i in ele:
tmp.extend([str(j),ele])
num = len(tmp)//2
if num:
tmp.insert(1,str(num))
res.extend(tmp)
res.insert(0,str(len(res)))
print(' '.join(res)) def print_list(seq_I,seq_R): # seq_I [123,456,786,453,46,7,5,3,665,453456,745,456,786,453,123] # seq_R [0,3,6] R_list = [] for i in seq_R: seq_i_tishen = [] for xx in seq_I: seq_i_tishen.append(xx) num_contain = 0#用来存储第二个数字 例为6 R_manzu = []# 用来暂时存储 例['123', '453', '3', '453456', '453', '123'] R_manzuindex = []# 例子 [0, 3, 7, 9, 13, 14] for j in seq_i_tishen: if str(i) in j: R_manzu.append(j) R_manzuindex.append(seq_i_tishen.index(j)) seq_i_tishen[seq_i_tishen.index(j)] = '*' num_contain += 1 if R_manzu != []: R_list.append(i) R_list.append(num_contain) # print(R_list) for n in range(len(R_manzu)): R_list.append(int(R_manzuindex[n])) R_list.append(int(R_manzu[n])) print(len(R_list),end=' ') for abc in R_list: print(abc,end=' ') return 0 while True: try: I_seq = input().split()[1:] R_seq = list(map(int,input().split()[1:])) R_seq = list(set(R_seq)) R_seq.sort() print_list(I_seq,R_seq) except: break
line1 = input().split()
line2 = input().split()
I = line1[1:]
R = sorted(line2[1:])
# R.sort()
sort_R = list(map(int, R))
sort_R1 = []
for i in range(len(sort_R)):
if not sort_R[i] in sort_R[(i+1):]:
sort_R1.append(sort_R[i])
RI = {}
for i in range(len(sort_R1)):
Ri = []
for j in range(len(I)):
if str(sort_R1[i]) in I[j] and I[j] not in Ri:
Ri.append(j)
RI[sort_R1[i]] = Ri
# print(sorted(RI))
Re = []
Ie = list(map(int, I))
# print(I)
for a in sorted(RI.keys()):
if RI[a] != []:
Re.append(int(a))
Re.append(len(RI[a]))
for j in range(len(RI[a])):
Re.append(int(RI[a][j]))
Re.append(int(I[int(RI[a][j])]))
print(len(Re), end=' ')
for i in range(len(Re)):
print(Re[i], end=' ')
target = input().split(" ")[1:]
nums = sorted(list(map(int, input().split(" ")))[1:])
dic = {}
for num in nums:
s = str(num)
if s in dic:
continue
dic[s] = []
for i, tar in enumerate(target):
if s in tar:
dic[s].append((i, tar))
ans = []
for s, t in dic.items():
if not t:
continue
ans.append(s)
ans.append(str(len(t)))
for x, y in t:
ans.append(str(x))
ans.append(str(y))
print(str(len(ans)), " ".join(ans))
纯模拟,妥妥shabi
while True:
try:
a, b = input().split(), input().split()
numI, numR = int(a[0]), int(b[0])
I, R = a[1:], b[1:]
ele, rec, total = [], [{}], 0
res = ''
R = sorted(list(set(R)), key=lambda x: int(x)) # 整数字符排序
for i in range(len(R)):
for j in range(numI):
if R[i] in I[j]:
rec[-1][j] = I[j]
if rec[-1]:
ele.append(R[i])
rec.append({})
for i in range(len(ele)):
res += ' ' + ele[i] + ' ' + str(len(rec[i]))
total += 2
for k, v in rec[i].items():
total += 2
res += ' ' + str(k) + ' ' + v
print(total, end = '')
print(res)
except:
break
while True:
try:
l = input().split(' ')[1:]
r = list(map(int, input().split(' ')[1:]))
r.sort()
r_sort = []
for i in r:
if i not in r_sort:
r_sort.append(i)
r_sort = list(map(str, r_sort))
dic = {}
for i in r_sort:
dic[i] = []
for i in r_sort:
for j in range(len(l)):
if i in l[j]:
dic[i].append((j, l[j]))
else:
continue
key_record = []
total_number = 0
for key, value in dic.items():
if value == []:
continue
else:
key_record.append(key)
total_number += 2
total_number = total_number + len(value)*2
result = [total_number]
for key, value in dic.items():
if value == []:
continue
else:
result.append(key)
result.append(len(value))
for pair in value:
result.append(pair[0])
result.append(pair[1])
result = [str(i) for i in result]
print(' '.join(result))
except:
break def r_get( s1_follow):
s1_empty = []
for x in s1_follow:
if x not in s1_empty:
s1_empty.append(x)
return sorted(s1_empty)
def i_get(s0, s1_follow):
s0_top, s0_follow = s0[0], s0[1:]
s0_ok_list = []
for s1 in map(str, s1_follow):
if len( [x for x in s0_follow if s1 in x] ):
s0_ok = [f'{index} {x}' for index, x in enumerate(s0_follow) if s1 in x]
s0_ok_list.append( f"{s1} {len(s0_ok)} {' '.join( s0_ok )}" )
return ' '.join( s0_ok_list )
while True:
try:
s0, s1 = input().split(), input().split()
s1_top, s1_follow = s1[0], map(int, s1[1:])
s1_follow = r_get(s1_follow)
s0_ok_list = i_get(s0, s1_follow)
print(len(s0_ok_list.split()), s0_ok_list)
except:
break