defsolve(): n = input() print(len([n[i] for i inrange(len(n)) if n[i] != '0'])) for i inrange(len(n)): if n[i] != '0': print(int(n[i])*pow(10, len(n)-i-1), end=' ') print()
defsolve(): n, m = list(map(int, input().split())) a = [0]*(n+2) for i inrange(m): l, r = list(map(int, input().split())) a[l] += 1 a[r+1] -= 1 for i inrange(1, n+1): a[i] += a[i-1] if a[i] != 1: print(i, a[i]) return print('OK')
defsolve(): input() n, m = list(map(int, input().split())) g = [list(map(int, input().split())) for i inrange(n)] l, r = 1, int(1e9) while l <= r: mid = l+r >> 1 if ck(g, mid, n, m): l = mid+1 else: r = mid-1 print(r)
defck(g, t, n, m): cnt = [0]*n for i inrange(m): hs = set() for j inrange(n): if g[j][i] >= t: hs.add(j) cnt[j] += 1 iflen(hs) == 0: returnFalse if n < m-1: returnTrue for i in cnt: if i > 1: returnTrue returnFalse
复杂度分析
时间复杂度:O(nmlog (1e9))
空间复杂度:O(nm)
Tips
当数据量大的时候,建议使用KMP,匹配公共前后缀。复杂度 O(n)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
defsolve(): n, m = list(map(int, input().split())) s = " "+input() i, j = 2, 0 ne = [0]*(n+1) while i <= n: while j and s[i] != s[j + 1]: j = ne[j] if s[i] == s[j + 1]: j += 1 ne[i] = j; i += 1 ans = s[1:] for j inrange(m-1): ans += s[ne[n]+1:] print(ans)