1
0

More than 3 years have passed since last update.

ABC175やってみた(個人的備忘録)

Posted at

最近競プロを始めて、せっかくだからコンテスト参加しようと思ってたのに忘れてたのでついさっきやりました。
Cまではできました。

A Rainy Season

こういうことですよね?

s=input()
if s=="RRR":
    print(3)
elif "RR" in s:
    print(2)
elif "R" in s:
    print(1)
else:
    print(0)

B Making Triangle

ソートして全探索で間に合うと思ったのでそうしてみました。
3つずつ切り抜いてからソートとどっちが早いんでしょう。私はよくわかってません。

n=int(input())
l=sorted([int(i)for i in input().split()])
ans=0
for i in range(n-2):
    for j in range(i,n-1):
        for k in range(j,n):
            if (l[i]!=l[j]and l[j]!=l[k])and l[k]-l[i]<l[j]:
                ans+=1
print(ans)

C Walking Takahashi

こういう数学的問題は個人的に苦手です。
良い感じに切り分けると良さそうだったのでそうしました。
X<0なXから正の方向へD移動するのと|X|から負の方向へD移動するのは座標の絶対値を求めるうえでは同じことなので、とりあえず最初にXを|X|に変換。
まず、k*DがXより小さいならX-k*Dが最小の座標なのは明らか。
次に、k*DがXより大きい場合はX%D(原点を超えない回数移動した際の座標)からk-X/D回移動することになるので、kとX/Dの偶奇が一致するか否かで場合分けします。
同じ場合はX%Dが、違う場合は|X%D-D|が答えになります。

X,k,D=map(int,input().split())
X=abs(X)
ans=0
if X>k*D:
    ans=X-(k*D)
else:
    if k%2==(X//D)%2:
        ans=X%D
    else:
        ans=abs(X%D-D)
print(ans)

D Moving Piece

ここまで書いたけど単純な全列挙だとTLEだよなあと思いました。
D問題からはぐっと競プロっぽくなるというかぱっと見で何言ってるのかわからなくなるというか……。
人とは……宇宙とは……。

n,k=map(int,input().split())
p=[int(i)for i in input().split()]
c=[int(i)for i in input().split()]
score=[0 for i in range(n)]
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0