对于一个字符串 S S S,我们定义 S S S 的分值 f ( S ) f(S) f(S) 为 S S S 中恰好出现一次的字符个数。例如 f ( a b a ) = 1 f(aba) = 1 f(aba)=1, f ( a b c ) = 3 f(abc) = 3 f(abc)=3, f ( a a a ) = 0 f(aaa) = 0 f(aaa)=0。
现在给定一个字符串 S 0 ⋯ n − 1 S_{0 \cdots n − 1} S0⋯n−1(长度为 n n n, 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1≤n≤105),请你计算对于所有 S S S 的非空子串 S i ⋯ j ( 0 ≤ i ≤ j < n ) , f ( S i ⋯ j S_{i \cdots j}(0 ≤ i ≤ j < n), f(S_{ i⋯j} Si⋯j(0≤i≤j<n),f(Si⋯j) 的和是多少。
输入一行包含一个由小写字母组成的字符串 S S S。
输出一个整数表示答案。
输入
ababc
输出
21
import os
import sys
# 请在此输入您的代码
from collections import deque
def remove_list(a, v):
for i in range(len(a)):
if a[i] == v:
a[i] = None
while None in a:
a.remove(None)
return a
def remove_1(a):
seen = set()
duplicated = set()
for x in a:
if x not in seen:
seen.add(x)
else:
duplicated.add(x)
for i in list(duplicated):
remove_list(a, i)
return len(a)
def child(s):
new = []
count = 0
for i in range(len(s)):
for j in range(len(s)-i):
new.append(s[j:j+1+i])
for var in new:
count += remove_1(list(var))
new.clear()
return count
if __name__ == '__main__':
s = input()
print(child(s))
在很久很久以前,有 n n n 个部落居住在平原上,依次编号为 1 1 1 到 n n n。第 i i i 个部落的人数为 t i t_i ti。
有一年发生了灾荒。年轻的政治家小蓝想要说服所有部落一同应对灾荒,他能通过谈判来说服部落进行联合。
每次谈判,小蓝只能邀请两个部落参加,花费的金币数量为两个部落的人数之和,谈判的效果是两个部落联合成一个部落(人数为原来两个部落的人数之和)。
输入的第一行包含一个整数 n n n,表示部落的数量。
第二行包含 n n n 个正整数,依次表示每个部落的人数。
其中, 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1≤n≤1000, 1 ≤ t i ≤ 1 0 4 1 \leq t_i \leq10^4 1≤ti≤104。
输出一个整数,表示最小花费。
输入
4
9 1 3 5
输出
31
import os
import sys
# 请在此输入您的代码
def talk(data):
data.sort()
count = data[0] + data[1]
sum1 = data[0] + data[1]
for i in range(2, n):
sum1 += data[i]
count += sum1
return count
if __name__ == '__main__':
n = int(input())
a = list(map(int, input().split()))
print(talk(a))
在一个 n n n 行 m m m 列的方格图上有一些位置有地雷,另外一些位置为空。
请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。
输入的第一行包含两个整数 n , m n, m n,m。
第 2 2 2 行到第 n + 1 n+1 n+1 行每行包含 m m m 个整数,相邻整数之间用一个空格分隔。如果对应的整数为 0 0 0,表示这一格没有地雷。如果对应的整数为 1 1 1,表示这一格有地雷。
其中, 1 ≤ n , m ≤ 100 1 \leq n, m \leq 100 1≤n,m≤100 分钟后还是在当天。
输出 n n n 行,每行 m m m 个整数,相邻整数之间用空格分隔。
对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出 9 9 9。
输入
3 4
0 1 0 0
1 0 1 0
0 0 1 0
输出
2 9 2 1
9 4 9 2
1 3 9 2
direction = [
lambda x, y: (x-1, y),# shang
lambda x, y: (x+1, y), # xia
lambda x, y: (x, y-1), # zuo
lambda x, y: (x, y+1), # you
lambda x, y: (x-1, y-1), # shang_zuo
lambda x, y: (x-1, y+1), # shang_you
lambda x, y: (x+1, y-1), # xia_zuo
lambda x, y: (x+1, y+1) # xia_you
]
def lei(data):
for vs in data:
for i in range(m):
if vs[i] == 1:
vs[i] = 9
for i in range(n):
for j in range(m):
for dir1 in direction:
nextNode = dir1(i, j)
if data[i][j] == 9:
break
if 0 <= nextNode[0] < n and 0 <= nextNode[1] < m:
if data[nextNode[0]][nextNode[1]] == 9:
data[i][j] += 1
return data
if __name__ == '__main__':
n, m = map(int, input().split())
a = []
for i in range(n):
v = list(map(int, input().split()))
a.append(v)
for i in lei(a):
print(' '.join(map(str, i)))