白駿16139号ヒューマンマシンインタラクション
10988 ワード
質問する
インプット
50分溶液 import sys
input = sys.stdin.readline
name = input().strip()
n = int(input())
for i in range(n):
a = input().split()
sum = 0
for j in range(int(a[1]), int(a[2]) + 1):
if name[j] == a[0]:
sum += 1
print(sum)
2つの繰り返し文を無知に使うだけ
20*20*20時間の複雑さで十分だと思います.
50点取った
100点 import sys
input = sys.stdin.readline
name = input().strip()
n = int(input())
arr = [[0 for i in range(26)] for i in range(len(name))]
arr[0][ord(name[0]) - 97] = 1
for i in range(1, len(name)):
arr[i][ord(name[i]) - 97] = 1
for j in range(26):
arr[i][j] += arr[i - 1][j]
for i in range(n):
a = input().split()
if int(a[1]) > 0:
res = arr[int(
a[2])][ord(a[0]) - 97] - arr[int(a[1]) - 1][ord(a[0]) - 97]
else:
res = arr[int(a[2])][ord(a[0]) - 97]
print(res)
#26개
説明:
累加して問題を解く.
26個の小文字a~zの2次元配列を作成する
a~zをAskyコードに変換すると-97は0~25になります
arr[i][j]+=arr[i-1][j]+現在のi位置のアルファベットAskyコード-97もあります
ゼロから最後までいくつか積算し、すべて2次元配列に入れます.
だからi~jからいくつかのアルファベットを確定するにはarr[i][askii] - ar[j-1][askii]
i~jの1番目のアルファベットaskiiの個数がわかる.
例外処理
0からi番斎ならarr[i][askii]-0
Reference
この問題について(白駿16139号ヒューマンマシンインタラクション), 我々は、より多くの情報をここで見つけました
https://velog.io/@slbin-park/백준-16139번-인간-컴퓨터-상호작용-파이썬
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
50分溶液 import sys
input = sys.stdin.readline
name = input().strip()
n = int(input())
for i in range(n):
a = input().split()
sum = 0
for j in range(int(a[1]), int(a[2]) + 1):
if name[j] == a[0]:
sum += 1
print(sum)
2つの繰り返し文を無知に使うだけ
20*20*20時間の複雑さで十分だと思います.
50点取った
100点 import sys
input = sys.stdin.readline
name = input().strip()
n = int(input())
arr = [[0 for i in range(26)] for i in range(len(name))]
arr[0][ord(name[0]) - 97] = 1
for i in range(1, len(name)):
arr[i][ord(name[i]) - 97] = 1
for j in range(26):
arr[i][j] += arr[i - 1][j]
for i in range(n):
a = input().split()
if int(a[1]) > 0:
res = arr[int(
a[2])][ord(a[0]) - 97] - arr[int(a[1]) - 1][ord(a[0]) - 97]
else:
res = arr[int(a[2])][ord(a[0]) - 97]
print(res)
#26개
説明:
累加して問題を解く.
26個の小文字a~zの2次元配列を作成する
a~zをAskyコードに変換すると-97は0~25になります
arr[i][j]+=arr[i-1][j]+現在のi位置のアルファベットAskyコード-97もあります
ゼロから最後までいくつか積算し、すべて2次元配列に入れます.
だからi~jからいくつかのアルファベットを確定するにはarr[i][askii] - ar[j-1][askii]
i~jの1番目のアルファベットaskiiの個数がわかる.
例外処理
0からi番斎ならarr[i][askii]-0
Reference
この問題について(白駿16139号ヒューマンマシンインタラクション), 我々は、より多くの情報をここで見つけました
https://velog.io/@slbin-park/백준-16139번-인간-컴퓨터-상호작용-파이썬
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import sys
input = sys.stdin.readline
name = input().strip()
n = int(input())
for i in range(n):
a = input().split()
sum = 0
for j in range(int(a[1]), int(a[2]) + 1):
if name[j] == a[0]:
sum += 1
print(sum)
import sys
input = sys.stdin.readline
name = input().strip()
n = int(input())
arr = [[0 for i in range(26)] for i in range(len(name))]
arr[0][ord(name[0]) - 97] = 1
for i in range(1, len(name)):
arr[i][ord(name[i]) - 97] = 1
for j in range(26):
arr[i][j] += arr[i - 1][j]
for i in range(n):
a = input().split()
if int(a[1]) > 0:
res = arr[int(
a[2])][ord(a[0]) - 97] - arr[int(a[1]) - 1][ord(a[0]) - 97]
else:
res = arr[int(a[2])][ord(a[0]) - 97]
print(res)
#26개
説明:
累加して問題を解く.
26個の小文字a~zの2次元配列を作成する
a~zをAskyコードに変換すると-97は0~25になります
arr[i][j]+=arr[i-1][j]+現在のi位置のアルファベットAskyコード-97もあります
ゼロから最後までいくつか積算し、すべて2次元配列に入れます.
だからi~jからいくつかのアルファベットを確定するにはarr[i][askii] - ar[j-1][askii]
i~jの1番目のアルファベットaskiiの個数がわかる.
例外処理
0からi番斎ならarr[i][askii]-0
Reference
この問題について(白駿16139号ヒューマンマシンインタラクション), 我々は、より多くの情報をここで見つけました
https://velog.io/@slbin-park/백준-16139번-인간-컴퓨터-상호작용-파이썬
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
0からi番斎ならarr[i][askii]-0
Reference
この問題について(白駿16139号ヒューマンマシンインタラクション), 我々は、より多くの情報をここで見つけました https://velog.io/@slbin-park/백준-16139번-인간-컴퓨터-상호작용-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol