AtCoder
ABC360
A - A Healthy Breakfast
高橋くんは、朝食にご飯、味噌汁、サラダを
1 皿ずつ食べます。
高橋くんの家のテーブルは細長いので、 3 皿を横一列に並べました。
並べ方は文字列
S によって与えられ、左から i 番目の皿は S I が
R ならご飯、
M なら味噌汁、
S ならサラダです。
ご飯の皿が味噌汁の皿より左にあるかどうかを判定してください。
s = input()
if s.index("R") < s.index("M"):
print("Yes")
else:
print("No")
B - Vertical Reading
英小文字からなる文字列 S と T が与えられます。
以下の条件を満たす
1 ≤ c ≤ w < ∣S∣ となる整数の組 c と w が存在するか判定してください。
ただし、
∣S∣ は文字列 S の長さを表します。
ここで、w は ∣S∣ 未満である必要があることに注意してください。
S を先頭から順に w 文字毎に区切ったとき、
長さが c 以上の文字列の c 文字目を順番に連結した文字列が T と一致する
方針
for 各w(文字づつ区切る)
for 各c文字目縦読み
S, T = input().split()
for w in range(1, len(S)):
for c in range(w):
n = 0
msg = ""
while (n * w + c < len(S)):
msg += S[n * w + c]
n += 1
if msg == T:
print("Yes")
exit()
print("No")
C - Move It
1 から N の番号がついた N 個の箱と
1 から N の番号がついた N 個の荷物があります。
荷物 i (1≤i≤N) は箱 A iの中にあり、重さは W i です。
あなたは荷物を一つ選び、他の箱の中に移動させる操作を
0 回以上繰り返し行うことができます。
1 回の操作で移動させる荷物の重さが w であるとき、
w のコストがかかります。
全ての箱に荷物が 1 つずつ入っている状態にするためにかかる
コストの総和の最小値を求めてください。
2025-04-14 21:19:31
N=int(input())
A=list(map(int,input().split()))
W=list(map(int,input().split()))
B=[0]*N 各箱に残す重さ登録
ans=0
for i,a in enumerate(A):
if B[a-1]: 初出でなければ
if B[a-1]>W[i]:
ans+=W[i] 軽いほうを解に追加
else:
ans+=B[a-1]
B[a-1]=W[i]
else:
B[a-1]=W[i] 初出ならその箱に登録
print(ans)
数直線上に 1 から N の番号がつけられた N 匹の蟻がいます。
蟻 i (1≤i≤N) ははじめ座標 X iにいて、正負どちらかの方向を向いています。
はじめに全ての蟻は相異なる座標にいます。各蟻が向いている方向は長さ N の 01 文字列 S で表され、
S i が 0 のとき蟻 i は負の方向を向いており、 1 のとき蟻 i は正の方向を向いています。
現在を時刻 0 とし、時刻 (T+0.1) までの (T+0.1) 単位時間にわたって、
N 匹の蟻がそれぞれの向いている方向に向かって単位時間あたり 1 の速さで移動します。
複数の蟻が同じ座標に到達すると、それらの蟻はすれ違い、方向や速度を変えずに通り過ぎます。
(T+0.1) 単位時間が経過したとき、すべての蟻は停止します。
1≤i<j≤N を満たし、今から時刻 (T+0.1) までに蟻 i と蟻 j がすれ違う整数の組 (i,j) の個数を
求めてください。
長さT
すれちがう
すれちがわない
li = [0, 5, 10, 15]
値の間の区間のindexを返す
関数
bisect_left(li, 3) # 1
bisect_right(li, 3) # 1
bisect_left(li, 5) # 1
bisect_right(li, 5) # 2
T
from bisect import bisect_left, bisect_right
n, t = map(int, input().split())
s = input()
x = list(map(int, input().split()))
toL = []
toR = []
for i in range(n):
if s[i] == ‘0’: 右行と左行に振り分け
toL.append(x[i])
else:
toR.append(x[i])
toL.sort()
result = 0
for e in toR:
result += bisect_right(toL, e + 2 * t) - bisect_left(toL, e)
print(result)
T
第5区間
第2区間
2025-04-05 15:59:53